생성 시간 검증 오류
@Test
void getHotdealSuccess() {
// Given
Hotdeal hotdeal = hotdealRepository.save(
HotdealTestUtil.createHotdeal(TEST_START_DAY, TEST_DUE_DAY, TEST_DEAL_QUANTITY,
TEST_SALE, product));
// When
HotdealResponseDto responseDto = hotdealService.getHotdeal(hotdeal.getId());
// Then
assertNotNull(responseDto);
assertEquals(hotdeal.getStartDay(), responseDto.getStartDay());
}
데이터베이스 저장 및 검색 과정: Hotdeal 객체를 데이터베이스에 저장한 후 다시 검색할 때, 데이터베이스가 LocalDateTime 값을 내부적으로 변환하는 과정에서 나노초 수준의 차이가 발생할 수 있다. 많은 데이터베이스는 시간을 저장할 때 특정한 정밀도로 반올림하거나 절삭한다. 예를 들어, 일부 데이터베이스는 밀리초나 마이크로초 단위까지만 지원하고 나노초는 무시한다.
삭제 트랜잭션 롤백
왜 삭제를 못하는건데?!!
@Override
@Transactional
public void deleteHotdeal(Member member, Long hotdealId) {
Hotdeal hotdeal = findHotdeal(hotdealId);
if (!isAuthorized(member)) {
throw new GlobalException(HotdealErrorCode.NO_AUTHORIZATION);
}
Product product = hotdeal.getProduct();
product.unlinkHotdeal();
hotdealRepository.delete(hotdeal);
}
핫딜(Hotdeal)과 상품(Product)가 신경삭으로 연결되어 있기 때문에
unlinkedHotdeal을 통해 연관관계를 강제로 끊어주지 않으면
삭제 트랜잭션이 롤백된다