> Java > java지도 시간 > 본문

내 Spring 데이터 JPA @Query 업데이트가 데이터를 업데이트하지 않는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-25 17:42:02
원래의
466명이 탐색했습니다.

Why is My Spring Data JPA @Query Update Not Updating Data?

Spring 데이터 JPA 업데이트 @Query가 데이터를 업데이트하지 않음

업데이트 쿼리가 정의되어 있음에도 불구하고:

<code class="java">@Modifying
@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(...);</code>
로그인 후 복사

그리고 통합 테스트에서 이를 사용하려고 하면

<code class="java">adminRepository.update("Toto", "LeHeros", admin0.getLogin(), admin0.getSuperAdmin(), admin0.getPreferenceAdmin(), admin0.getAddress(), admin0.getZipCode(), admin0.getCity(), admin0.getCountry(), admin0.getEmail(), admin0.getProfile(), admin0.getPostLoginUrl(), admin0.getId());
Admin loadedAdmin = adminRepository.findOne(admin0.getId());
assertEquals("Toto", loadedAdmin.getFirstname()); // Assertion failed
assertEquals("LeHeros", loadedAdmin.getLastname()); // Assertion failed</code>
로그인 후 복사

데이터베이스의 필드가 초기 값으로 유지되어 테스트가 실패하게 됩니다. findOne 쿼리 전에 플러시를 추가해도

<code class="java">adminRepository.flush();</code>
로그인 후 복사

문제가 해결되지 않습니다.

로그에서 업데이트 문을 볼 수 있는데, 이는 Spring Data가 올바르게 쿼리하십시오. 그러나 후속 findOne 쿼리의 결과는 업데이트로 인한 변경 사항과 일치하지 않습니다.

이 동작의 가능한 이유 중 하나는 EntityManager가 기본적으로 변경 사항을 자동으로 플러시하지 않기 때문입니다. 이 문제를 해결하기 위해 @Modifying 주석에clearAutomatically 옵션을 추가할 수 있습니다.

<code class="java">@Modifying(clearAutomatically = true)
@Query("UPDATE Admin SET ...")
public void update(...);</code>
로그인 후 복사

이렇게 하면 EntityManager가 업데이트 쿼리를 실행한 후 보류 중인 모든 변경 사항을 자동으로 플러시하여 변경 사항이 지속되고 반영되도록 해야 합니다. 후속 쿼리에서

위 내용은 내 Spring 데이터 JPA @Query 업데이트가 데이터를 업데이트하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿