如何让hibernate自动处理继承?
我将B从A扩展,并将InheritanceType设置为Join,代码如下:如何让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
@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);