Hibernate onetomany单向关系,在更新Parent对象时删除映射?

时间:2016-05-13 06:17:40

标签: java hibernate hibernate-mapping hibernate-onetomany

我有一个父类卖家,它有很多子类的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();

请帮忙。

0 个答案:

没有答案