Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让hibernate自动处理继承?_Hibernate_Inheritance - Fatal编程技术网

如何让hibernate自动处理继承?

如何让hibernate自动处理继承?,hibernate,inheritance,Hibernate,Inheritance,我将B从A扩展,并将InheritanceType设置为Join,代码如下: @Entity @Table(name = "parent") public class Parent implements IsSerializable { @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) List<A> children; ... } @Entity @I

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

 @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 B推到列表中

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


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

您没有持久化
A
B
,因此它们不会持久化。要么显式地持久化它们,要么将类型persist的级联添加到
子类
列表中,以便持久化操作从perent级联到其子类。

我将@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)添加到列表中,但结果与以前相同,结果是什么?你告诉我们没有发生什么,但你没有告诉我们发生了什么。有例外吗?堆栈跟踪是什么?发生了什么?很抱歉,结果是:生成了父表、A表和联接表,并保存了数据,但没有生成B表。
   B b=new B();
   list.getChildern().add(b); 
    Parent p=new Parent();
    p.setChildren(list);
    hibernate.persist(entity);