• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

22.09.08 13:25 작성 조회수 131

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와 연결된 트랜잭션인지 확인해보시길 바랍니다.

감사합니다.