Собственный запрос JPA с одним и тем же столбцом дважды

Я использовал его для хранения объектов с файлами с памятью. Конкретным примером была база данных изображений, которая обрабатывала большое количество больших изображений (больше, чем могла бы поместиться в память).

0
задан javshak 5 March 2019 в 17:46
поделиться

1 ответ

Вам нужно использовать Основанные на интерфейсе проекции :

Вам нужно будет создать интерфейс, который определяет получатели для каждого поля в вашей проекции, например:

public interface RequestJoinRunProjection {
  int getId();
  LocalDate getRequestTime();
  String getMessage();
  String getRequestDay();
  Long getHowLongAgo();
}
[ 118] Затем вы определяете метод в вашем репозитории, у которого есть собственный запрос, который вы хотите выполнить:

public interface TestRequestRepository extends CrudRepository<TestRequest, Long> {

  // Any other custom method for TestRequest entity

  @Query(value = "SELECT trq.Id AS id " +
      "   , trq.RequestTime AS requestTime " +
      "   , DAYNAME(trq.RequestTime) AS requestDay " +
      "   , trq.StatusMessage AS statusMessage " +
      "   , DATEDIFF(YEAR, CURDATE(), trq.RequestTime) AS howLongAgo " +
      "FROM TestRequest trq " +
      "         LEFT JOIN TestRun tr " +
      "                   ON trq.TestRunId = tr.Id " +
      "WHERE Requestor = ?1 ORDER BY Id DESC"), nativeQuery = true)
  List<RequestJoinRunProjection> findTestSumary(String name);
}

Запрос уведомления должен быть собственным, так как вы используете функции базы данных, также имена столбцов должны соответствовать установщикам ваш интерфейс проекции (следуя правилам bean), поэтому используйте AS для изменения имен в вашем запросе.

Я настоятельно рекомендую вам протестировать ваш запрос на h2, прежде чем вводить в @Query аннотацию. DATEDIFF требуется 3 параметра.

0
ответ дан Cristian Colorado 5 March 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: