일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 커밋 컨벤션
- responsepart
- break-label
- Git
- GitFlow
- Hibernate
- 스프링부트 쇼핑몰 프로젝트
- 반복문 탈출
- VB
- Visual Basic
- 연관관계
- 제작기
- 부트캠프
- 값 타입
- Java
- 코딩테스트
- PDFBOX
- 테킷
- querydsl
- spring jpa
- spring
- springboot
- DOCS
- 프로그래머스
- orm
- 멋쟁이사자처럼
- 체인호출
- 알고리즘
- JPA
- PDF병합
Archives
- Today
- Total
섭섭한 개발일지
QueryDSL JPA로 생성된지 일정시간이 지난 데이터 가져오기 본문
프로젝트에서 데이터가 생성되면 create_at 필드에 생성 일자 데이터가 삽입된다.
프로젝트 로직에서 생성된 데이터의 스테이터스가 일정 시간이 지나도 변경되지 않으면 해당 데이터를 삭제하는 로직이 필요했다.
SQL로 작성한 바는 아래와 같았다.
SELECT id, time(created_at)
FROM restaurant_order
WHERE time (subdate(now(), INTERVAL 30 MINUTE)) >= time(created_at)
AND status = 1
AND deleted_at IS NULL;
이걸 QueryDSL JPA 로 표현을 해야하기에 찾아보고 테스트 해본 결과
아래와 같이 작성을 하면 SQL과 동일하게 작동이 되었다.
public List<RestaurantOrder> findOrderToDelete() {
BooleanExpression conditions =
restaurantOrder.createdAt.before(LocalDateTime.now().minusMinutes(30))
.and(restaurantOrder.orderStatus.eq(RestaurantOrderStatus.ADD_INFO))
.and(restaurantOrder.deletedAt.isNull());
return jpaQueryFactory
.selectFrom(restaurantOrder)
.where(conditions)
.fetch();
}
'프로그래밍 > JPA' 카테고리의 다른 글
JPA EnumConverter Entity Mapping (공통 기능) (0) | 2024.07.15 |
---|---|
QueryDSL LIKE 삽질 (0) | 2024.03.23 |
프록시 객체의 클래스 타입 비교 문제 (0) | 2024.03.19 |
QueryDSL JPA 1:N 관계에서 N의 조건 추가 (0) | 2024.03.13 |
JPA에서 CDATA 사용하기 (0) | 2023.05.03 |
Comments