Я пытаюсь создать JPA Repository Query в Spring Boot.
- Я использую spring-data-jpa 2.1.5, spring-boot 2.1.3, postgresql драйвер 42.2. 5, h2database 1.4.200, Java 1.8
Мои условия:
- Я должен использовать PostgreSQL для производства и H2 для модульных (интеграционных) тестов .
- Я не должен использовать собственный запрос (postgres x h2).
- Мне нужно получать записи клиентов из таблицы клиентов
- Но только клиенты, которые зарегистрировались как минимум за 24 часа до текущей даты.
- Так что я имею в виду дату БД. Я не могу использовать Java для передачи какого-либо параметра в запрос.
Моя клиентская сущность выглядит так:
@Entity
@Table(name = "customer")
public class Customer {
@Id
@Column(name = "cust_no")
private int custNo;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "registration_timestamp")
private Date registrationTimeStamp;
}
И мой репозиторий будет выглядеть так:
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> {
@Query(value = "SELECT c FROM Customer c WHERE c.registrationTimeStamp <= SOMETHING")
List<Customer> getCustomers24HoursAfterRegistration();
}
Я действительно не знаю, что я должен поставить это место относится ЧТО-ТО. Я думаю, что могу использовать что-то вроде CURRENT_TIMESTAMP - SOMETHING_REFERS_24_HOURS. Все примеры о nativeQuery. Или передавая параметр из Java. Я не могу использовать INTERVAL, потому что Spring JPA не поддерживает.
Я не могу поверить, что такого простого процесса нет в Spring JPA, который поддерживает обе RDBMS (PostgreSql и H2). И я хочу спросить, есть ли способ сделать это?