I need to update the items of the following class, although I can update all the items but all fields of the class will be changed to null, and its connection to its members will be removed.
@Entity
public class Category implements Serializable {
@Id
@GeneratedValue
private long id;
@OneToMany( cascade = CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Items> items;
private float price;
@ManyToOne
private Staff user;
@ManyToOne
private Staff owner;
@Temporal(javax.persistence.TemporalType.DATE)
private Date createDate;
....
@Entity
public class Items {
@Id
@GeneratedValue
private Long id;
private int serial;
@OneToOne
private Product product;
.....
Hibernate
Category cat = (Category) session.get(Category.class, id);
for (int i = 0; i < cat.getItems().size(); i++) {
cat.getItems().get(i).getProduct().setQuantity(10);
Part part = new Part();
part.setName("Temp");
cat.getItems().get(i).getProduct().getPart.add(part);
session.update(cat.getItems().get(i).getProduct());
session.save(part);
}
tx.commit();
Example
Before Update
Category
1 2000 Alex Jack 05-05-2014
category_categoryitem
1 137
categoryitem
137 900 20
After Update
category
1 0 Null Null Null
category_categoryitem
categoryitem
137 900 20
The code is correct, except that I just added @DynamicUpdate
to avoid updating unmodified fields, and removed a line which was updating the table from another function.