를 업데이트하지 않습니다 업데이트의봄 JpaRepository 내가 다음 JPARepo 코드가 테이블
@Service
@Slf4j
@Transactional(readOnly = true)
public class MyService {
@Autowired
private MyObjectRepository myObjectRepository;
// some methods here
@Transactional
public void deleteMyObject(MyObject myObject) {
** first way **
myRepository.deleteById(myObject.getMyObjectId());
** second way **
myObject.setDeleted(true);
myObjectRepository.save(myObject);
}
//some methods here
}
두 가지 방법이 한 번만 실행됩니다. 다음에 메서드를 호출 할 때 삭제 열의 엔터티 값은 기본적으로 false이며 업데이트 후에는 false로 유지됩니다. 그러나 디버그에서 테이블을 단계별로 볼 때 삭제 된 열이 true로 설정되어 있고 디버그를 릴리스 할 때 삭제 플래그가 false로 다시 설정되는 것을 볼 수 있습니다. 캐싱 중이거나 부정확 한 주석을 달았습니까?
일부 예외가 발생하고 롤백이 –
@RC 발생합니다. 아니, 모두 확실하다 –
업데이트 쿼리를 실행하면 개체 모델에 직접 반영되지 않습니다. 특정 업데이트 쿼리를 실행 한 후에는 데이터베이스에서 개체를 강제로 다시로드해야합니다. (최대 절전 모드 인 경우 범위 외부에서 개체 상태를 수정 중입니다). 그래서 '거짓'이라면 응용 프로그램의 경우가 될 것입니다. 다른 것들을 업데이트 (또는 그렇지 않으면 쿼리를 트리거)하면 메모리 내와 db 상태가 다르기 때문에 상태가 재설정됩니다. –