我从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中。但它们不会。我做错了什么?
答案 0 :(得分:1)
你没有坚持a
和b
,所以他们没有坚持不懈。要么明确地保留它们,要么在children
列表中添加一个PERSIST类型的级联,以便持久化操作从perent到其子节点级联。