Jpa 更新并加入JPQL
关于JPQL的教程和示例总是涉及SELECT语句,有时还涉及简单的UPDATE语句。我需要用联接更新表 我简化了我的环境: 键Jpa 更新并加入JPQL,jpa,join,jpql,Jpa,Join,Jpql,关于JPQL的教程和示例总是涉及SELECT语句,有时还涉及简单的UPDATE语句。我需要用联接更新表 我简化了我的环境: 键 =id -柜台 小程序 =id ! 密钥id(1-1) 设备 =id ! 小程序id(1-1) ! 用户id(1-n) 用户 =id -登录 设备具有唯一的小程序,该小程序具有唯一的键集。但是一个用户可以拥有多个设备 我需要重置用户登录“x”上每个键的计数器 我用UPDATE和JOIN尝试了一些语法,但没有成功。有线索吗 谢谢。您尝试了什么,出现了什么错误?你的对象模型
=id
-柜台 小程序
=id
! 密钥id(1-1) 设备
=id
! 小程序id(1-1)
! 用户id(1-n) 用户
=id
-登录 设备具有唯一的小程序,该小程序具有唯一的键集。但是一个用户可以拥有多个设备 我需要重置用户登录“x”上每个键的计数器 我用UPDATE和JOIN尝试了一些语法,但没有成功。有线索吗
谢谢。您尝试了什么,出现了什么错误?你的对象模型是什么 也许是
Update Key k set k.counter = 0 where exists (Select u from User u join u.devices d where u.login = "x" and d.applet.key = k)
看,,
您还可以选择对象并重置内存中的计数器并提交更改。JPQL不支持批量更新操作中的联接操作。 编辑查询时,nativeQuery=true,您可以加入 应根据数据库中的字段编写查询
@Transactional
@Modifying
@Query(nativeQuery = true,
value = "UPDATE Team t" +
" SET current = :current " +
" FROM " +
" members," +
" account" +
" WHERE " +
" members.members_id = t.members_id " +
" AND members.account_id = :account " +
" AND t.current = :current_true ")
int updateTeam(
@Param("current") String current,
@Param("account") Long account,
@Param("current_true") Integer current_true);
我试试这个,谢谢。我正在使用NativeQuery,等待一个更优雅的JPQL解决方案。