[SPRING] Spring Data JPA로 업데이트 쿼리를 통해 발행 된 변경 사항을 볼 수없는 이유는 무엇입니까?
SPRINGSpring Data JPA로 업데이트 쿼리를 통해 발행 된 변경 사항을 볼 수없는 이유는 무엇입니까?
나는 다음과 같은 봉사를한다 :
@Service
public class CamelService {
@Transactional
public aCamelThing() {
Camel camel = this.camelRepository.findOne(1);
System.out.println(camel.getCamelName()); // prints "normalCamel"
// simple hql set field 'camelName'
int res = this.camelRepository.updateCamelName(1,"superCamel!");
Camel camelWithNewName = this.camelRepository.findOne(1);
System.out.println(camelWithNewName .getCamelName()); // prints "normalCamel" ?!?!?
}
}
어떻게하면 두 번째 println이 인쇄 할 목표를 달성 할 수 있습니까? "superCamel!" ? 두 번째 호출을 새 트랜잭션으로 분리하는 것은 이상적이지 않습니다.
해결법
-
==============================
1.JPA는 그렇게 작동하도록 정의되어 있습니다.
JPA는 그렇게 작동하도록 정의되어 있습니다.
updateCamelName (...)에 대한 업데이트 쿼리를 트리거한다고 가정합니다. JPA 스펙은 갱신 및 삭제 조작에 대해 다음을 명시합니다.
즉, 이러한 작업의 변경 사항을 확인해야하는 경우 다음 작업을 수행해야합니다.
이 문제를 해결할 수있는 가장 안전한 방법은 대량 작업에만 업데이트 쿼리를 사용하고 기본적으로 "엔터티, 변경, 병합"접근 방식으로 전환하는 것입니다.
from https://stackoverflow.com/questions/22533399/why-do-i-not-see-changes-issued-through-an-update-query-with-spring-data-jpa by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Entities 대신 Spring Rest Controller 레이어에 DTO를 사용해야할까요? (0) | 2019.02.12 |
---|---|
[SPRING] Spring 기반 웹 애플리케이션에서 만료 된 세션 처리 (0) | 2019.02.12 |
[SPRING] JPA2 Criteria-API : select ... in (어디에서 선택 하시겠습니까?) (0) | 2019.02.12 |
[SPRING] 클라이언트 비밀없이 Spring OAuth2 서버로부터 access_token을 얻을 수 있습니까? (0) | 2019.02.12 |
[SPRING] 어쨌든 @ Inject / @ Autowire로 내부 클래스를 외부 클래스에 넣으시겠습니까? (0) | 2019.02.12 |