Пользовательский запрос Jpa с датой ближайшей к настоящему фильтру - PullRequest
0 голосов
/ 16 января 2019

У меня есть веб-приложение SpringBoot, использующее JPA, и у меня есть такой класс моделей:

@Entity
class Server {
  .....
  private Date updateDate;

}

Теперь я хотел бы создать собственный запрос внутри своего хранилища, чтобы получить Сервер сущность с атрибутом updateDate , ближайший к дате в базе данных Oracle 11g.

Прямо сейчас я нашел всего несколько примеров, подобных этому для SQLServer:

SELECT TOP 1 *
FROM x
WHERE x.date < @CurrentDate
ORDER BY x.date DESC

Мне бы хотелось, чтобы нечто подобное создавалось с помощью Jpa в базе данных Oracle 11g.

Спасибо всем

Ответы [ 2 ]

0 голосов
/ 19 января 2019

нет, может я плохо себя выразил. В любом случае мне нужен метод, использующий Jpa, который возвращает мне объект, дата которого более поздняя.

Решение:

public interface ZabbixInstanceRepository extends JpaRepository<ZabbixInstance,String> {

  @Query("select z from ZabbixInstance z where z.refreshDate = (select max(z.refreshDate) from ZabbixInstance z)")
  ZabbixInstance findByClosestDate();

}

Работает отлично. Я надеюсь, что это помогает другим.

Спасибо, все равно

0 голосов
/ 16 января 2019

Поскольку вы используете Spring Data JPA, вы можете создать метод хранилища:

Server findFirstByUpdateDateLessThan(Date currentDate);

Вы должны передать currentDate как параметр, потому что нет способа использовать current_date в методе репозитория.

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

Вы также можете использовать обычный JPA:

List<Server> list = entityManager
       .createQuery("select s from Server s where s.updateDate < current_date", Server.class)
       .setMaxResults(1)
       .getResultList();

Если вы уверены, что получите один результат, вы также можете вызвать getSingleResult ()

...