如何让hibernate自动处理继承?

时间:2012-11-01 07:32:02

标签: hibernate inheritance

我从A扩展B,并将InheritanceType设置为JOINED,代码如下:

 @Entity
 @Table(name = "parent")
 public class Parent implements IsSerializable
 {
        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    List<A> children;
        ...
 }


 @Entity
 @Inheritance(strategy= InheritanceType.JOINED)
 public class A implements IsSerializable
 {
    @Id
    @GeneratedValue
    @Column(name = "id")
    Long id;
 }

 @PrimaryKeyJoinColumn(name="id")
 public class B extends A
 {
     String name;
 }

然后将A推送到列表

   A a=new A();
   list.getChildern().add(a); 

将B推送到列表

   B b=new B();
   list.getChildern().add(b); 

然后

    Parent p=new Parent();
    p.setChildren(list);
    hibernate.persist(entity);

希望列表的第一个元素将保存到table_A中,第二个元素将自动保存到table_B中。但它们不会。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你没有坚持ab,所以他们没有坚持不懈。要么明确地保留它们,要么在children列表中添加一个PERSIST类型的级联,以便持久化操作从perent到其子节点级联。