我有一个父类卖家,它有很多子类的onetomany映射。它还有一些属性,如名称,ID,电子邮件。在编辑序列中,我正在获取此对象在jsp上显示它,通过Spring MVC表单绑定它,从用户获取输入,然后使用session.saveorupdate(seller)将其保存到db。
但是这样做之前我对所有子类的映射都被删除了。只有连接表的映射才会被删除。如果使用mappedBy进行双向映射,则不会删除它。
所有映射都是延迟提取。
情景是:
第1步:注册卖家。添加电子邮件,名称值。
第2步:在不同的旅程中创建子对象,创建A列表,将Band添加到现有卖家对象。
第3步:更改卖家名称,编辑卖家,保存之前的所有映射后都已消失。
Seller.java
@Entity
@Table(name = "Seller")
public class Seller {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column
private String name;
@Column
private String address;
@Column
private String email;
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "seller_roles", joinColumns = { @JoinColumn(name = "seller_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") })
private Role role;
@OneToMany(mappedBy = "seller", cascade = CascadeType.ALL)
private List<A> a = new ArrayList<A>();
@OneToMany(cascade = CascadeType.ALL)
private List<B> b = new ArrayList<B>();
@OneToMany(mappedBy = "seller", cascade = CascadeType.ALL)
private List<C> c = new ArrayList<C>();
@OneToMany(cascade = CascadeType.ALL)
private List<D> d = new ArrayList<D>();
@OneToMany(cascade = CascadeType.ALL)
private List<E> e = new ArrayList<E>();
将SellerDaoImpl中的卖家保存为:
Session session = sessionFactory.openSession();
session.beginTransaction();
session.saveOrUpdate(seller);
session.getTransaction().commit();
session.close();
请帮忙。