업데이트 문이 플러시되지 않나요?
Spring Data JPA의 @Query 주석을 사용하면 사용자 지정 쿼리를 실행할 수 있습니다. 제공된 코드 조각에서 @Modifying 쿼리는 관리 엔터티를 업데이트하는 데 사용됩니다. 그러나 이 쿼리를 통해 변경된 사항은 데이터베이스에 유지되지 않습니다.
플러싱의 역할
기본적으로 EntityManager는 변경 사항을 자동으로 플러시하지 않습니다. 즉, @Modifying 쿼리를 통해 이루어진 변경 사항은 EntityManager의 로컬 캐시에만 반영되지만 EntityManager가 명시적으로 플러시될 때까지는 데이터베이스에 유지되지 않습니다.
해결책: 강제 플러시
@Modifying 쿼리를 통해 변경된 내용이 데이터베이스에 유지되도록 하려면 @Modifying 주석에clearAutomatically = true 옵션을 추가하세요. 이렇게 하면 EntityManager가 각 쓰기 작업 후에 변경 사항을 자동으로 플러시하여 데이터베이스가 즉시 업데이트되도록 합니다.
수정된 쿼리:
<code class="java">@Modifying(clearAutomatically = true) @Transactional @Query("UPDATE Admin SET firstname = :firstname, lastname = :lastname, login = :login, superAdmin = :superAdmin, preferenceAdmin = :preferenceAdmin, address = :address, zipCode = :zipCode, city = :city, country = :country, email = :email, profile = :profile, postLoginUrl = :postLoginUrl WHERE id = :id") public void update(@Param("firstname") String firstname, @Param("lastname") String lastname, @Param("login") String login, @Param("superAdmin") boolean superAdmin, @Param("preferenceAdmin") boolean preferenceAdmin, @Param("address") String address, @Param("zipCode") String zipCode, @Param("city") String city, @Param("country") String country, @Param("email") String email, @Param("profile") String profile, @Param("postLoginUrl") String postLoginUrl, @Param("id") Long id);</code>
추가 고려 사항:
위 내용은 Spring Data JPA에서 내 업데이트 문이 플러시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!