>  기사  >  Java  >  ## 내 Spring 데이터 JPA @Query 업데이트가 엔터티에 반영되지 않는 이유는 무엇입니까?

## 내 Spring 데이터 JPA @Query 업데이트가 엔터티에 반영되지 않는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 10:39:02513검색

## Why is My Spring Data JPA @Query Update Not Reflecting in the Entity?

Spring Data JPA @Query를 사용하여 업데이트하지 않음

Spring Data JPA에서 제공된 업데이트 쿼리가 엔터티를 업데이트하지 못해 오류가 발생합니다. 테스트 실패.

매개변수화된 값을 사용하기 위해 쿼리에 필요한 수정 사항을 구현했음에도 불구하고 업데이트된 필드는 영향을 받지 않고 초기 값을 유지합니다. 찾기 작업 직전에 플러시 작업을 추가해도 문제가 해결되지 않습니다.

생성된 SQL 문을 살펴보면 업데이트 쿼리는 올바르게 실행되었으나 수정된 ​​엔터티를 검색하는 쿼리는 잘못된 것으로 보입니다. 무시되었습니다. 이는 잠재적인 캐싱 문제를 시사합니다.

그러나 다른 파인더에 호출을 추가하면 업데이트된 값이 검색된 개체에 반영됩니다. 이 동작은 일관성이 없고 예상치 못한 것입니다.

또한 수정된 엔터티를 검색하는 SQL 문에는 Limit 2 절이 포함되어 있지만 Spring Data는 단일 개체를 반환할 때 항상 Limit 1 절을 사용해야 한다고 가정합니다.

흥미롭게도 생성된 SQL 문을 MySQL 클라이언트에서 수동으로 실행할 때 로직이 완벽하게 작동하므로 이 동작이 Java 수준에서 일관되게 반영되지 않는 이유에 대한 의문이 제기됩니다.

이 문제의 근본 원인 변경 사항을 자동으로 플러시하지 않는 EntityManager의 기본 동작에 있습니다. 이 문제를 해결하려면 @Modifying 주석에서clearAutomatically 옵션을 활성화하여 업데이트 쿼리 후 변경 사항이 즉시 플러시되도록 해야 합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.