当我使用table-per-subclass策略时,我的基类(父类)包含复合主类。每个子类在表中生成Hibernate子类ID
@Column(nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XXX")
@SequenceGenerator(name = "XXX", sequenceName = "XXX", allocationSize = 1)
private Long systemId;
@Id
@Column(nullable = false)
private Long version;
所以,所有扩展这个(我知道它)的实体都继承了id和它的注释属性。 问题是,当我创建一个新的父实体,主要是从序列创建,那没关系。但是当我创建子类实例时,它增加了我不需要的父级ID(从seq创建一个新的主级),`因为我使用table-per-subclass和primary gottta是相同的。
问:如何在子类中抑制id代?
@Entity
@PrimaryKeyJoinColumns(
{
@PrimaryKeyJoinColumn(name = "systemId"),
@PrimaryKeyJoinColumn(name = "version")
}
)
public class SUb extends Parent {
public SUb (Parent t) {
super(t);
}
public SUb() {
}
...
... no ids...
是的,但我没有@子类中的ID。冬眠甚至不能允许。我有PrimaryKeyJoinColumns 2列我的化合物PK – user2709715
我认为第二个是从子类。在这种情况下,分配第二列标识符。 –
请发布基地和子类进一步检查。 –