我在我的应用程序中使用了hibernate注释。但我遇到了一个问题。
@Entity
@Table(name = DBConstants.T_A )
@Inheritance(strategy=InheritanceType.JOINED)
public class A {
//Id
@Column(name = "id")
@GeneratedValue(generator = A_SEQ)
@SequenceGenerator(name = A_SEQ, sequenceName=SeqA_SEQ)
private long id;
....
}
//Entity
@Table(name = "T_B")
@PrimaryKeyJoinColumn(name = "a_id")
public class B extends A{
String a;
.....
}
@Entity
@Table(name = "T_C")
@PrimaryKeyJoinColumn(name = "a_id")
public class C extends B
{
...
}
最初,我正在保存class A
。
一段时间后,在保存class C
的同时,我设置了已保存的A类id
。在尝试保存C类时,它会创建一个新的class A
对象,并将新创建的对象值设置为C类对象。我需要class C
对象class A
对象id,它最初是创建的。
我不明白为什么再次创建class A
的新对象。任何人都可以回答我的问题出了什么问题吗?
答案 0 :(得分:0)
由于您希望C与已存在的对象A具有相同的ID,因此这不是实体继承。
您基本上想要对现有对象的引用,并且您应该使用@OneToOne
关系来映射它。