【问题标题】:JPA Update Multiple Records in Table for a IDJPA 更新表中的多个记录以获取 ID
【发布时间】:2020-10-24 20:38:50
【问题描述】:

我需要来自源的带有 id1 的输入记录,在目标表中我需要更新列 c1 中的值 v1,并且在 id1 的目标中有多个记录。使用 JPA,我需要使用值 v1 更新所有这些记录。使用 JPA 的最佳方法是什么?

我在下面使用 findallbyid() 然后 saveall() - 它没有说目标中有多个记录,但预期是一个。

【问题讨论】:

  • 你能告诉我们你的代码 sn-p 和你得到的异常吗?

标签: java spring-boot jpa spring-data-jpa


【解决方案1】:

根据提供的详细信息 findallbyid() 然后 saveall()

这里的方法 findallbyid() 实际上是希望在表中只找到一条记录,因为这里有多行。

更改方法的签名应该可以按预期工作。正如它期望方法签名中的大写单词

https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html

List<T> findAllById(Long id);

但建议不要读取所有行然后再次保存以更新一两列,您可以使用类似下面的方法来实现相同的效果

@Modifying
@Transactional
@Query(value = "UPDATE table t SET t.column = :status WHERE t.id = :id")
int update(@Param("status") String status, @Param("id") Long id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多