Я использую оракула в качестве базы данных. Мне нужно написать собственный запрос и сохранить результат в виде списка. Нативный запрос, который я пытаюсь выполнить, отлично работает, используя инструмент 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();
}