SportsEcho(3)

문정현·2024년 1월 17일
0

생성 시간 검증 오류

        @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을 통해 연관관계를 강제로 끊어주지 않으면
삭제 트랜잭션이 롤백된다

profile
주니어 개발자를 꿈꾸며

0개의 댓글