Собственный запрос Hibernate CrudRepository не возвращает результат с помощью функции to_timestamp - PullRequest
0 голосов
/ 25 апреля 2019

Я использую оракула в качестве базы данных. Мне нужно написать собственный запрос и сохранить результат в виде списка. Нативный запрос, который я пытаюсь выполнить, отлично работает, используя инструмент sqldeveloper. Но когда я пытаюсь это сделать с CrudRepository, результат возвращает пустой список. Я в основном пытаюсь получить данные за текущий месяц, в котором мы находимся.

made_at - поле метки времени в базе данных

Ниже мой код

@Repository
public interface TestRepository extends CrudRepository<City, Long> {

    @Query(value = "SELECT * FROM (SELECT plate,SUM(TOTAL_PRICE) as total FROM sale_item_ok where company_id =2 and created_at >= TO_TIMESTAMP (TRUNC(sysdate,'mm'),'DD/MM/YYYY') and created_at < TO_TIMESTAMP (TRUNC(add_months(sysdate,1),'mm'),'DD/MM/YYYY') group by plate order by total desc) WHERE ROWNUM<=5"
                   , nativeQuery = true)
    List<item> findCustomVehicles();

}

Интерфейс проекции

public interface item{

    String getPlate();
    int getTotal();
}

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

@Repository
public interface TestRepository extends CrudRepository<City, Long> {

    @Query(value = "SELECT * FROM (SELECT plate,SUM(TOTAL_PRICE) as total FROM sale_item_ok where company_id =2 group by plate order by total desc) WHERE ROWNUM<=5"
                   , nativeQuery = true)
    List<item> findCustomVehicles();

}

1 Ответ

0 голосов
/ 25 апреля 2019

Можете ли вы попробовать это один раз?Использование метода createNativeQuery (sqlString, resultClass) Собственные запросы также можно определять динамически с помощью EntityManager.createNativeQuery ()

String sql = "YOUR_QUERY WHERE ID = ?";
Query query = em.createNativeQuery(sql, item.class);
query.setParameter(1, id);
item itemObj= (item) query.getSingleResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...