인프런 커뮤니티 질문&답변

ILoveBackEnd님의 프로필 이미지
ILoveBackEnd

작성한 질문수

실전! 스프링 데이터 JPA

변경 감지 dirty checking이 되지 않습니다.

작성

·

194

0

안녕하세요. 강의 잘 듣고 있습니다.

 

service에

 

    @Transactional
    public ResponseDTO changeAuthority(String invitedId, UserAuthority authority, Long companyId, String sessionUserId, Locale locale) {

        Users user = usersRepository.findByUserIdAndCompanyAndUseYn(invitedId, new Company(companyId), "Y");
        user.authorityUpdate(authority);

        return new ResponseDTO(1, "");
    }

간단히 이런 코드가 있습니다.

 

authorityUpdate는 authority 받아서

this.authority = authority;

해주는 부분입니다.

 

이 경우 당연히 변경 감지가 돼서 update가 돼야 한다고 생각하는데요

되지 않습니다

 

지금 이 애플리케이션의 특이점이라고 한다면

DB가 두 대가 붙어 있습니다

그래서 쿼리dsl 사용할 때도 DB를 지정해서 EntityManager를 불러와야 했습니다

저것도 그래서 안되나 싶은데 제가 확인 해봐야 할 것이 뭐가 있을까요??

 

메인 DB 연결된 쪽은 잘 됩니다

 

 

findBy~ 후에 영속성 컨텍스트가 바로 끊기는거 같습니다.

그렇게 생각한 이유는 getById로 해봤는데

could not initialize proxy ~ no session 이런 에러가 발생하고

findById 하면 에러는 나지 않는데 업데이트가 안됩니다.

 

osiv true로 하고도 해봤습니다.

 

그냥 save 하면 update 되긴 하는데

그건 선생님께서 알려주신 방법이 아니기도 하고

대체 왜! 안되는지 궁금합니다 ㅠㅠ

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. jg9870님

트랜잭션이 현재 DB와 연결된 트랜잭션인지 확인해보시길 바랍니다.

감사합니다.

ILoveBackEnd님의 프로필 이미지
ILoveBackEnd

작성한 질문수

질문하기