GUR*_*MVG 2 annotations hibernate
我目前正致力于使用注释的双向OneToMany Hibernate关联.我遇到了问题.
Parent实体有许多子实体.每当我更新Parent中的Child set并尝试更新Parent实体时,Child表中仍然存在旧的Child条目.所以Parent包含重复的子记录.
每当我更新Parent实体时,它的子条目也应该自动更新,没有重复项,这意味着应该删除现有的子实体.
我用谷歌搜索,发现有一种肮脏的方式实现这一目标.获取Parent的现有Child实体并迭代每个子节点并使用session.delete(child)删除每个子实体.我知道这是非常糟糕的做法.
我们能否以更好的方式使用注释来实现上述目标?请帮我解决这个问题.
使用delete-orphan级联设置.从父项中删除子项后,将删除该子项.
您必须修改已加载并存在于会话中的集合,以便delete-orphan工作.这意味着集合必须是PersistentSet或其他任何东西,你删除并添加对象.
就像是
Set<Product> newProducts = new HashSet<Products>();
newProducts.add(prod1);
newProducts.add(prod2);
order.setProducts(newProducts);
Run Code Online (Sandbox Code Playgroud)
只会将parent_id int he products表设置为null,它不会删除它们.现在像
Set<Product> products = order.getProducts();
products.clear();
products.add(prod1);
products.add(prod2);
Run Code Online (Sandbox Code Playgroud)
应该删除孩子.
并且请记住,对于任何删除孤儿来说,订单和产品必须加载并存在于会话中.
| 归档时间: |
|
| 查看次数: |
3629 次 |
| 最近记录: |