일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- PDFBOX
- break-label
- 커밋 컨벤션
- DOCS
- 멋쟁이사자처럼
- 연관관계
- 알고리즘
- Visual Basic
- responsepart
- 반복문 탈출
- springboot
- JPA
- Hibernate
- 제작기
- spring jpa
- 코딩테스트
- 값 타입
- Git
- spring
- 체인호출
- orm
- 스프링부트 쇼핑몰 프로젝트
- PDF병합
- 테킷
- 프로그래머스
- querydsl
- 부트캠프
- Java
- VB
- GitFlow
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