Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 更新并加入JPQL_Jpa_Join_Jpql - Fatal编程技术网

Jpa 更新并加入JPQL

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尝试了一些语法,但没有成功。有线索吗 谢谢。您尝试了什么,出现了什么错误?你的对象模型

关于JPQL的教程和示例总是涉及SELECT语句,有时还涉及简单的UPDATE语句。我需要用联接更新表

我简化了我的环境:


=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解决方案。