JAVA JPA更新相关实体

标签 java jpa

我在更新相关实体时遇到问题。

让我从一个简单的例子开始。 假设我有一个用户 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/

相关文章:

java - SpringBoot OAuth2RestTemplate 重试请求

java - JPA - 复合 key 识别中的关系

jpa - 如何为 EclipseLink 正确设置 SQL 日志记录?

java - 如何打印类的每个实例的访问器的输出?

java - 设置批处理文件以在命令行上运行,设置商店

java - jhipster应用程序的JWT认证

jpa - Spring数据JPA JPQL查询子属性

java - InheritanceType.JOINED、@PrimaryKeyJoinColumn 和嵌套子类

java - hibernate一次插入三个表

java - 如何让 java gui 从一个 gui 转换到另一个 gui