Я пытаюсь создать наследование со стратегией TABLE_PER_CLASS, но хочу иметь разные первичные ключи для каждой таблицы. Возможно ли это?
У меня есть один класс Register, который имеет миллионы экземпляров, некоторые из этих экземпляров являются «особыми» и имеют разные правила для своих столбцов и дополнительных столбцов.
@MappedSuperclass
public abstract class Register {
@Id
@Column(nullable = false, unique = true, updatable = false)
private Long userId;
private Date checked;
@Column(nullable = false)
private RegisterState tipo;
}
@Entity
@AttributeOverrides({ @AttributeOverride(name = "userId", column = @Column(nullable = false, unique = false, updatable = false)) })
public class PotencialRegister extends Register implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 64, nullable = false, unique = false)
private String referer;
}
Для базового регистра мне не нужен атрибут Id, потому что у меня есть один уникальный столбец, но для специализированного объекта этот столбец не уникален, поэтому я добавил дополнительный атрибут.
проблема в том, что hibernate использует родительский идентификатор для создания составного первичного ключа (сгенерированная схема):
create table PotencialRegister (
id integer not null,
userId bigint not null,
checked datetime(6),
tipo integer not null,
referer varchar(64) not null,
primary key (id, userId)
)
create table Register (
userId bigint not null,
checked datetime(6),
tipo integer not null,
primary key (userId)
)
Столбцы правильные, и мне нужна схема, но я хотел бы удалить элемент «id» из первичного ключа PotencialRegister.