JPA 是否可以使用播放框架执行 UPDATE sql 查询?
目前,我对实体进行更新的方法是:
- 通过 find() 方法或 find() 方法中的选择查询检索实体
- 改变我想要的值
- 在对象上调用 save() 方法
但我想它会进行 2 个查询:一个 SELECT 和一个 UPDATE。
有没有办法只使用一个查询来完成所有事情?只有一个 UPDATE 查询?
感谢您的帮助
JPA 是否可以使用播放框架执行 UPDATE sql 查询?
目前,我对实体进行更新的方法是:
但我想它会进行 2 个查询:一个 SELECT 和一个 UPDATE。
有没有办法只使用一个查询来完成所有事情?只有一个 UPDATE 查询?
感谢您的帮助
只要您使用 API 方法,我认为您不会解决 2 查询问题。实体管理器不能只是开始更新实体。它必须首先找到它们,检查它们的状态,然后决定是否真的需要更新,即是否进行了更改。
但是,您可以始终使用JPQL
. 您find()
很可能会使用与您的实体的主键匹配的 id 或类似的东西。
您可以将 id 传递到语句中并直接更新。但是,如果 id 不是来自用户输入而是来自先前的选择,我只会这样做。换句话说,保证是一个现有的实体并且是你真正想要的。
查询可能如下所示:
UPDATE MyTable SET MyValue = :newValue WHERE MyId = :id
在哪里传入 newValue 和 id 作为参数。
但是,我宁愿让实体经理来做所有的工作。无论如何,您为什么要在单个语句中执行此操作?除非您执行大量操作,否则速度应该不是问题,因为这些简短而具体的语句通常非常快。