Jes*_*lcv 5 hibernate jpa jpql
如何在执行jpql查询之后获取更新的记录数
UPDATE Device d SET d.name =:Name WHERE d.locationId=:id
Run Code Online (Sandbox Code Playgroud)
您可以使用executeUpdate()方法来计算这样的数:
Query query = em.createQuery(
"UPDATE Device d SET d.name =:Name WHERE d.locationId=:id");
int updateCount = em.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
@Modifying
@Query("UPDATE Device d SET d.name =:Name WHERE d.locationId=:id")
int updateDeviceName(@Param("Name ") int Name ,
@Param("id") int id);
Run Code Online (Sandbox Code Playgroud)
方法的返回类型是Integer,它等于受影响的行数,但如果不需要或不需要,可以将其设置为void.添加@Modifying(clearAutomatically = true)以确保从过期的条目中清除EntityManager以确保数据的新鲜度.
这可确保在执行查询时自动清除EntityManager,从而确保没有实体未同步.在某些情况下这可能是合乎需要的,但它取决于使用存储库方法的上下文,因此您必须小心这一点; 在没有注意到或记住这种副作用的情况下很容易使用这种方法,这可能会导致应用程序出现问题.希望单元测试可以用来捕捉这样的错误,但可能并非如此.所以明智地使用这个标志.
参考: - 执行更新查询后更新的记录数
| 归档时间: |
|
| 查看次数: |
5859 次 |
| 最近记录: |