2016-06-02 2 views
0

3 개의 테이블 UserDetail, RequestorDetail 및 AddressDetail이 있습니다. UserDetail에 userId (PK), userName, AddressDetail에시 및 교외가 있고 RequestorDetail에 reqEmail 및 reqPhone이 있습니다.JPA에서 하나의 쿼리를 사용하여 3 개의 테이블을 업데이트하는 방법은 무엇입니까?

하나의 쿼리를 사용하여 이러한 모든 세부 정보를 업데이트하고 싶습니다. 지금은 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); 

누구나 tel를 사용하여 단일 쿼리에서이 모든 것을 사용하는 방법은 있습니까?

+0

하나의 쿼리 만 사용해야하는 특별한 이유가 있습니까? SQL (JPA 기반)에서 여러 테이블을 동시에 업데이트 할 수 없기 때문에 묻습니다. 당신이해야 할 일은 3 개의 쿼리를 모두 수행하고 3 개의 쿼리가 실행 된 후에 만 ​​커밋하는 트랜잭션을 사용하는 것입니다. – Pascal

+0

거래 방법을 알려주십시오. 나는 똑같이 조사했지만, 나는 명확한 생각을하지 못했다. 예를 들어 주시겠습니까? – Thej

+0

죄송합니다. JPA를 사용하지 않고 정확하게 트랜잭션을 열거 나 쿼리를 실행하는 방법을 모르겠습니다. 당신은 보통 그것을 어떻게합니까? – Pascal

답변

관련 문제