Выполнить интервал через Spring Boot JPA + Postgresql + H2 - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь создать 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). И я хочу спросить, есть ли способ сделать это?

1 Ответ

0 голосов
/ 15 января 2020

Если вы не хотите использовать собственный запрос, вам нужно использовать методы запроса

, вы можете сделать что-то вроде

 List<User> findByCreatedAtGreaterThanEqual(Data createdAt);

Более подробно вы можете увидеть (https://www.baeldung.com/spring-data-jpa-query-by-date, https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa .query-методы )

...