使用@PrimaryKeyJoinColumn进行Hibernate注释

时间:2011-03-25 13:04:52

标签: java hibernate annotations

我在我的应用程序中使用了hibernate注释。但我遇到了一个问题。

A类

@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;

   ....
}

B级

//Entity
@Table(name = "T_B")
@PrimaryKeyJoinColumn(name = "a_id")
public class B extends A{

   String a;
 .....
}

C类

@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的新对象。任何人都可以回答我的问题出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

由于您希望C与已存在的对象A具有相同的ID,因此这不是实体继承。

您基本上想要对现有对象的引用,并且您应该使用@OneToOne关系来映射它。