• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

더미 데이터 추가 후 pk 겹침

23.11.25 13:38 작성 23.11.25 13:42 수정 조회수 143

0

실제 구현을 하는 도중 더미 데이터가 있으면 좋겠다 싶어서 data.sql을 만들어서 다음과 같이 sql을 추가했습니다. 5개의 레코드를 추가했습니다.

insert into BASKET_FOOD_ENTITY(bakset_food_id, bakset_id, food_id, food_quantity)values ( 1,1,1,3 ),(2,1,2,2),(3,1,3,5),( 4,2,1,2 ),(5,2,2,4);

 

그 후, 테스트에서 new로 basketFoodEntity를 만들어 add메소드를 통해 DB에 객체를 persist하도록 만들었습니다.

 

BasketFoodEntity basketFood = new BasketFoodEntity(foodEntity,basketRepository.findBasketId(2L),5);basketRepository.addFood(basketFood,userId);

 

addFood 메소드는 다음과 같습니다.

public void addFood(BasketFoodEntity basketFood , Long userId){ 
Long inBasketId = isAlreadyInBasket(basketFood.getFood().getId(), userId); 
if(inBasketId > 0) 
updateFoodQuantityToBasket(inBasketId,getFoodQuantity(inBasketId)); 
else em.persist(basketFood);
}

추가된 BasketFoodEntity의 Id는 GeneratedValue로 인해 6이 되어야 하는 것으로 알고 있는데, 왜 1이 될까요? 계속 1로 잡혀서 pk가 겹칩니다. GeneratedValue를 빼고 직접 ID를 6으로 설정하면 테스트는 통과됩니다.

답변 2

·

답변을 작성해보세요.

1

gooch123님의 프로필

gooch123

질문자

2023.11.25

자문자답입니다

다음 블로그를 보고 해결했습니다. insert문에 직접 키를 넣어주어서 DB에서 다음에 할당할 키를 1로 알고 있어서 그런것 같습니다

https://hyeonic.tistory.com/196

0

codesweaver님의 프로필

codesweaver

2023.11.26

안녕하세요. gooch123님, 공식 서포터즈 코즈위버입니다.

스스로 잘 해결하셨습니다 :) 

강의 수강 중 강의 관련 궁금한 사항은 언제든 질문 남겨주세요^^