我在更新相关实体时遇到问题。
让我从一个简单的例子开始。 假设我有一个用户 1:1 配置文件关系。
如何更新(替换)属于用户的配置文件实体?
我尝试了以下方法但没有成功(OneToOne 关系都有 CascadeType=ALL 属性)
em.getTransaction().begin();
1.User.setProfile(Profile)
....
2.User.setProfile(Profile)
Profile.setUser(User)
.....
3.em.remove(User.getProfile())
User.setProfile(Profile)
Profile.setUser(User)
em.getTransaction().commit();
我对 JPA 完全感到困惑,有一些有用的例子,但它们不是关于更新实体(只是更新单个值,提高工资等......)
我希望建议的方法也适用于 1:N 关系。
最佳答案
我总是在更新实体后执行em.merge(user);
。如果您有适当的级联选项,这也会更新所有相关实体。
现在,我知道(听说)实体应该在事务结束时更新数据库本身,但我更喜欢直接调用。坦率地说,我发现整个“自动更新实体”模式在现实世界的开发中更多的是一个问题而不是优势。
关于JAVA JPA更新相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3128252/