如何在JPA中使用一个查询更新3个表?

时间:2016-06-02 14:01:52

标签: mysql jpa spring-data

我有3个表UserDetail,RequestorDetail和AddressDetail。 UserDetail有userId(PK),userName,AddressDetail有城市和郊区,RequestorDetail有reqEmail和reqPhone。

我想使用一个查询更新所有这些细节。截至目前,我使用了3种不同的查询,如下所示。

@Modifying
    @Query("update UserDetail u set "u.userName = :userName, u.password = :password where u.userEmailId = :userEmailId")
    int saveUserDetailData(@Param("userName") String userName, @Param("password") String password,  @Param("userEmailId") String userEmailId);

@Modifying
    @Query("update RequestorDetail r set r.requestorEmailid = :requestorEmailid, r.requestorPhone = :requestorPhone where r.userId = :userId")
    int saveRequestorDetailData(@Param("requestorEmailid") String requestorEmailid,
            @Param("requestorPhone") String requestorPhone, @Param("userId") int userId);

@Modifying
    @Query("update AddressDetail a set a.city = :city, a.suburb = :suburb where a.userId = :userId")
    int saveAddressDetailData(@Param("city") String city, @Param("suburb") String suburb,
            @Param("userId") int userId);

任何人都可以通过电话告诉我如何在单个查询中使用所有这些?

1 个答案:

答案 0 :(得分:0)

无法使用单个sql查询更新多个表。 见https://community.oracle.com/thread/2225393

您必须将其拆分为不同的查询。