销售订单实体。
@Entity @Table(name = "sales_orders") @IdClass(ReceiptPK.class) public class SalesOrders implements Serializable { public SalesOrders() { } @Id protected Integer receiptID; @Id protected Integer dateKey; public SalesOrders(Integer receiptID, Integer dateKey) { this.receiptID = receiptID; this.dateKey = dateKey; } //order contains many details @OneToMany(fetch = FetchType.LAZY, mappedBy = "salesOrders") @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE}) private Set<SalesOrderDetails> orderDetails = new HashSet<SalesOrderDetails>(); public Set<SalesOrderDetails> getOrderDetails() { return orderDetails; } public void setOrderDetails(Set<SalesOrderDetails> orderDetails) { this.orderDetails = orderDetails; } // other property ..
订单详细信息实体。
@Entity @Table(name = "sales_order_details") public class SalesOrderDetails implements Serializable { public SalesOrderDetails() { } private int id; @Id @GeneratedValue(strategy = GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } // Order holder private SalesOrders salesOrders; @ManyToOne @JoinColumns({ @JoinColumn(name = "order_num", referencedColumnName = "receiptID"), @JoinColumn(name = "date_key", referencedColumnName = "dateKey")}) public SalesOrders getSalesOrders() { return salesOrders; } public void setSalesOrders(SalesOrders salesOrders) { this.salesOrders = salesOrders; } // other property ...
我的问题:当我尝试删除不影响 sales_order_details
的订单商品时。
SalesOrders saleOrder = (SalesOrders) getSession().get(SalesOrders.class ,new ReceiptPK(receiptID,dateKey));
saleOrder.getOrderDetails().remove(someDetails);
getSession().beginTransaction();
getSession().saveOrUpdate(saleOrder);
getSession().getTransaction().commit();
但是 someDetails
并未删除。
--任何帮助将不胜感激......
最佳答案
我认为您必须提交相同的事务。
getSession().getTransaction().begin();
getSession().saveOrUpdate(saleOrder);
getSession().getTransaction().commit();
关于java - hibernate 更新一对多项目集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22923282/