0

我有 B 从 A 扩展,并将 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。但他们没有。我做错了什么?

4

1 回答 1

1

你没有坚持ab,所以他们没有坚持。要么显式地持久化它们,要么将 PERSIST 类型的级联添加到children列表中,以便持久化操作从 perent 级联到其子级。

于 2012-11-01T08:54:44.227 回答