실전! 스프링 데이터 JPA
복합키 식별자 관계
안녕하세요.
jpa에 있어서 한줄기 빛과 같은 강의를 너무 잘듣고 있습니다.
jpa에 입문한지 얼마 안되서 이것저것 삽질을 열심히 하는 와중에,
파생되는 식별자 관계에 대해 확인하다가 이해가 되지 않는 부분이 있어서 질문드립니다.
현재 spring data jpa로 진행중이며 간략한 엔티티 및 관계 정의는 아래와 같습니다.
Entity A [primary key A1, A2]
IdClassA [A1, A2]
Entity B [primary key A1, A2, B1] / ManyToOne 단방향 관계, fetch lazy
IdClassB [IdClassA, B1]
ex) BeforeAll로 A,B 더미 데이터를 저장
@Transactional
@Test
Brepository.findAll();
Brepository.findAll();
B Repository로 findall을 두번호출했을때 ( 다른 코드는 없습니다 )
identifier of an instance of B was altered from BIdClass@90c990a9 BIdClass@21b621d7 와 같이 예외가 발생했습니다. (키 값을 변경하려고 시도한적도 없습니다)
첫번째 호출했을때는 db에있는 값을 전체 다 가져오고
두번째 호출했을때는 같은 트랜잭션 안에서 진행하니 식별자를 기준으로 진행하는 것 같은데, 왜 주소값이 변경되었는지 잘모르겠습니다.
이와 관련해서 검색 컨셉을 잘못잡은것인지 모르겠지만, 검색해도 잘 안나오더라구요.
만약 findall을 두번 써야 하는 상황이라면, 어떻게 해결하는것이 좋을까요?