0

I have a Parent class Seller , it have onetomany mappings to all many child classes. It also has some properties as name,id , email . In edit sequence I am fetching this object displays it on jsp , bind it through Spring MVC form , takes input from user and then save it as it is to db using session.saveorupdate(seller).

But while doing so my previous mappings with all the child classes are getting deleted. Only the mapping from join tables are getting deleted. If there is a two way mapping using mappedBy , it is not deleted.

All the mapping are lazy fetch.

Scenario is :

Step 1: Register seller . Add email ,name values.

Step 2 : Create child object in different journeys , create List of A ,Band add to existing seller object.

Step 3: Change name of seller , editing the seller and after saving all the previous mapping are gone.

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>();

Saving seller in SellerDaoImpl as :

 Session session = sessionFactory.openSession();
 session.beginTransaction();
 session.saveOrUpdate(seller);
 session.getTransaction().commit();
 session.close();

Please help.

Smita Ahinave
  • 1,901
  • 7
  • 23
  • 42

0 Answers0