안녕하세요 김영한님!
자유주재로 올렸다가 요청해주신것에 따라서 질문으로 옮겼습니다.
현재 spring data jpa로 진행중이며 간략한 엔티티 및 관계 정의는 아래와 같습니다.
Entity A [primary key A1, A2] / LectureType.class
IdClassA [A1, A2]
Entity B [primary key A1, A2, B1] / ManyToOne 단방향 관계, fetch lazy / ExamType.class
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 와 같이 예외가 발생했습니다. (키 값을 변경하려고 시도한적도 없습니다)
이와 관련해서 제가 개념을 잘못 익힌것인지, 검색 컨셉을 잘못잡은것인지 모르겠지만, 검색해도 잘 안나오더라구요.
각 엔티티의 주키를 string으로 직접 저장하는것 때문인지, 정확한 문제를 모르겠습니다.
공유 링크 : https://drive.google.com/file/d/1fnbHq8i1gcZC0eWFuCYolDnRzwOqio2x/view?usp=sharing
실행 방법 : spring data jpa 강의를 그대로 따라 한것이여서 강의에서 설명해주신것과 실행 방식이 다르지 않습니다. 다만 h2 데이터베이스를 별도로 다운받지 않고,
내장된 것을 사용중입니다. application.yml에 정보가 추가 되어 있습니다.
문제 발생되는곳 : test/java/study/datajpa/domain/exam/ExamTypeRepositoryTest 에서 exam_type_crud_check() 테스트 실행하면 에러 내용을 확인 할 수 있습니다.
하나더 궁금한 것이 있는데 id를 직접 넣어서 할때 강의해주신 Persistable<String>을 사용하면 된다고 하셨는데, 복합키 혹은 식별 관계에 있는 복합키일 경우 IdClass를 String 부분에 넣어주면 되는것일까요??