0

JPA 是否可以使用播放框架执行 UPDATE sql 查询?

目前,我对实体进行更新的方法是:

  • 通过 find() 方法或 find() 方法中的选择查询检索实体
  • 改变我想要的值
  • 在对象上调用 save() 方法

但我想它会进行 2 个查询:一个 SELECT 和一个 UPDATE。

有没有办法只使用一个查询来完成所有事情?只有一个 UPDATE 查询?

感谢您的帮助

4

1 回答 1

2

只要您使用 API 方法,我认为您不会解决 2 查询问题。实体管理器不能只是开始更新实体。它必须首先找到它们,检查它们的状态,然后决定是否真的需要更新,即是否进行了更改。

但是,您可以始终使用JPQL. 您find()很可能会使用与您的实体的主键匹配的 id 或类似的东西。
您可以将 id 传递到语句中并直接更新。但是,如果 id 不是来自用户输入而是来自先前的选择,我只会这样做。换句话说,保证是一个现有的实体并且是你真正想要的。

查询可能如下所示:

UPDATE MyTable SET MyValue = :newValue WHERE MyId = :id 

在哪里传入 newValue 和 id 作为参数。

但是,我宁愿让实体经理来做所有的工作。无论如何,您为什么要在单个语句中执行此操作?除非您执行大量操作,否则速度应该不是问题,因为这些简短而具体的语句通常非常快。

于 2012-08-27T13:59:37.697 回答