작성
·
642
0
첫번째 이미지 잘 안보이시죠?
여기로 부탁드립니다 ㅠ,ㅠ 크기를 키우는것이 힘드네요..ㅠ.ㅠ
강의 내용대로
open-in-view: false
enable_lazy_load_no_trans: false
셋팅하고 (
둘중에 true로 하면 당연 문제가 없습니다...
)
Service단에
@Transactional(readOnly = true)
안에 getOne을 호출 하였습니다.
프록시 객체가 허용하도록 했는데요
왜 response가
could not initialize proxy []- no Session*/
왜 이런 에러가 나오는건가요...
혹시 짐작가는게 있을까요?
TransactionSynchronizationManager.getCurrentTransactionName()
혹시나 트렌젝션 안에 작동하지 않는걸까? 라고 생각했지만 트랜젝션 안에 포함 되었습니다.
선생님 감사합니다. 어쩔수없이 이렇게 질문 드립니다.
답변 4
0
안녕하세요. 리나님
스키마가 다르면 영속성 컨텍스트도 다르게 설정하기 때문에, 연동이 되지 않습니다.
따라서 LAZY등이 불가능합니다.
이 경우에는 message_user와 Member를 연결하시면 안됩니다. 단순히 PK 값만 가지고 있도록 설계하셔야 합니다.
감사합니다.
0
선생님 그럼 한가지만 더 질문 하겠습니다.
Message one = messageRepository.getOne(1L);
Member member = one.getMessageUsers().get(0).getMemberInfo();
이것인데요
테이블 다이어그램으로 쉽게 표현하겠습니다.
한마리로 모든 연관관계를 LAZY로 셋팅하고
최초 message 출력(그전에 프록시 상태였습니다. )하고 A스키마의 message_users 까지 탐색 후
그 다음 B스키마의 member 까지 탐색하면 (그전에 프록시 상태였습니다. )
맨첫번째 이미지 처럼 에러가 발생됩니다.
결국 이것은 다른 트렌젝션이라서 안되는건가요? 결국 그럼 서로 다른 영속성 컨테스트라서? 인가요?
0
0
https://www.inflearn.com/questions/33949
혹시 이분도 저랑 같은 이슈 추측
=========================
선생님 일단 해결한거 같습니다.!!
사실 mysql를 사용하는데 한 프로젝트 안에서 각각 다른 스키마를 사용하고 있었습니다.
그런데 문제는 디폴트로 선정 안된 다른 스키마통해
JPA getOne 할때나 프록시로된 다른 연관관계를 가져올때 문제가 발생된건데요
그래서 이미 빈으로 등록 한 "{쳇}TransactionManager" 통해
실행하고자 transation optional “transactionManager” 에 추가 하고 하니 문제가 없었습니다. (이해가 될실까요? ㅠ.,ㅠ)
혹시 다른 좋은 방법이 있다면 공유 부탁드립니다 ㅠ,ㅠ