【问题标题】:Update entity in jpa更新 jpa 中的实体
【发布时间】:2019-06-30 13:33:34
【问题描述】:

如何在不写 sql 查询的情况下更新实体中的每个字段:

(update Entity u set u.m1= ?1, u.m2= ?2, ... where u.id = ?3)

类有 20 多个字段,如果我编写 sql 查询,这将需要很长时间。而且我经常添加新字段

我可以自动更新所有内容吗?像这样:

entityRepo.update(entity);

如果我这样做 entityRepo.save(); 在基础中创建不必要的记录。

【问题讨论】:

    标签: java spring spring-boot jpa


    【解决方案1】:

    不,您可以使用JpaRepository.save(S entity) 保存更新实体(如果存在)。
    为此,请确保实体在调用 save() 之前对其 JPA @Id 进行了赋值,否则确实会创建新记录。

    【讨论】:

    • 更简单:如果实体仍处于附加状态(即事务未关闭),您可以简单地更新对象。当事务提交时,更改将被刷新。
    • @Turing85,没错。 JpaRepository.save() 只是为现有实体提供em.merge(entity);(附加实体)。
    【解决方案2】:

    这是@davidxxx's answer 的替代方案。

    如果获取实体的事务尚未关闭(即实体仍处于附加状态),您可以简单地更新 java-object,并在提交事务时将更改提交到数据库。

    【讨论】:

    • 优秀的替代品。
    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多