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 に保存され、2 番目の要素が table_B に自動的に保存されることを願っていますが、そうではありません。

4

1 に答える 1

1

あなたは永続的abはないので、それらは永続化されません。それらを明示的に永続化するか、タイプ PERSIST のカスケードをchildrenリストに追加して、永続化操作が親から子にカスケードされるようにします。

于 2012-11-01T08:54:44.227 に答える