Я не эксперт по этому вопросу, но у EntityManager.createStoredProdecureQuery
есть второй аргумент, используемый для указания типа возвращаемого значения. Что происходит, когда вы меняете вызов следующим образом (также прокомментируйте строку, которую вы установили ResultTransformer)?
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Sp_Tab_GetCollectionInvoice", CollectionItem.class);
Если вышеуказанное решение не работает, я подозреваю, что столбцы, возвращенные из хранимой процедуры, несопоставьте членов класса POJO, как требуется. Вы можете написать отображение, используя <sql-result-set-mapping>
или соответствующую аннотацию, чтобы отобразить ваш набор результатов для ваших учеников. Насколько я помню, интерфейс запросов Hibernate также имеет методы для обработки этого отображения программно. Возможно, вы захотите проверить методы addRoot()
и addProperty()
.
Примечание: Я только что заметил, что ваш класс CollectionItem
не помечен @Entity
. Я не уверен, что вышеуказанное решение будет работать в этом случае. Если вы не хотите добавлять @Entity
и использовать преобразователь результатов, я думаю, что вашему классу CollectionItem
нужен конструктор без аргументов. Чтобы преобразователь bean работал, Hibernate требует, чтобы у класса не было конструктора или общедоступного конструктора без аргументов.