Преобразовать объекты из запроса в другой класс в Hibernate? - PullRequest
0 голосов
/ 09 января 2019

У меня следующая проблема: я использую Spring + Hibernate и в настоящее время пытаюсь выбрать идентификатор + количество его идентификатора и вернуть список с каждым идентификатором и его соответствующим количеством. Теперь проблема в том, что у конвертера возникла проблема, поскольку я получаю следующее исключение:

ConverterNotFoundException: не найден конвертер, способный конвертировать от типа [java.lang.Long] к типу [... entity.E_Amount]] с корнем причина

E_Amount создает объекты с идентификатором и суммой. И мой запрос:

 @Query("select t.e.id, count(t.id) from...")

возвращает превосходный результат long и целого числа, например {9101}

Я просто не совсем уверен, как начать решать эту проблему преобразования. Благодарим за любую идею!

1 Ответ

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

Попробуйте стратегию класса результата:

1) Создайте новый класс ResultClass с конструктором, принимающим результаты вашего запроса:

public class ResultClass{

    public ResultClass(Integer id, Long count){..}
}

2) Немного изменить запрос:

@Query("select new com.mypackage.ResultClass(t.e.id, count(t.id)) from...")
public List<ResultClass> query(..);

Просто убедитесь, что аргументы конструктора находятся в том же порядке, что и столбец в операторе select.

...