테스트코드 BeforeEach를 통해 입력시 ID값이 초기화 되지 않을때
@BeforeEach를 통해 매번 해당 데이터를 입력시킨 후 (이때 ID는 AutoIncrement되는 값) 이를 ID값으로 찾아오는 메서드를 사용하여 수정 / 삭제를 하려고 할때 , ID를 통해 데이터를 찾아오지 못했는데, 알고보니 BeforeEach를 수행할 때마다 AI값이 1씩 상승하게 되여 3번,4번 등으로 바뀌게 되었다. 따라서 EntityManager를 주입받아 AI값을 BeforeEach에 매번 초기화하는 메서드를 작성해줘야한다. 해당 쿼리는 DB종류마다 다다르게 작성되니 쿼리문을 찾아서 집어넣으면 해결된다.
SPRING 공부/JPA
2022. 6. 25. 01:51
JPA를 이용한 연관관계 입력 후 조인 쿼리조회시 안되는 문제
Test 코드에서 Test Data를 BeforeEach에 넣어 두었는데. 나는 saveAndFlush를 하면 해당 쿼리 이후로 DB에 반영되어 조회가 되는 줄 알았다. 그러나 Controller로 해당 내용을 호출시 user에 대한 Entity는 조회가 되었으나, @OneToMany로 되어있는 pointHistory 리스트를 가져오지 못했다. 찾다가 찾다 해메서 EntityManager를 주입받아 clear()를 해주어야지만 영속성 컨텍스트가 비워지면서 조인쿼리로 해당 리스트들을 조회받을 수 있었다.
SPRING 공부/JPA
2022. 6. 25. 01:45