Есть ли возможность возвращать пользовательские сложные объекты JPAJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Есть ли возможность возвращать пользовательские сложные объекты JPA

Сообщение Гость »


Я разрабатываю приложение Spring Boot с использованием Spring Data JPA. Я использую специальный запрос JPQL для группировки по некоторому полю и списку объектов.

Мой класс сущности:

Обзор публичного класса { @ManyToOne частный ApplicationUser applicationUser; частная строка месяца; частный Целочисленный номер месяца; частный Целочисленный год; частный строковый рейтинг; } Мой класс модели:

публичный класс UserInformationExport { частная строка userGid; частная строка LastName; частная строка firstName; частные оценки List; } общественный класс MonthlyReview { частная строка месяца; частный Целочисленный номер месяца; частный строковый рейтинг; } Я попробовал выполнить следующий запрос, но он не сработал. Как мне составить этот список объектов?
Решение
ОБНОВЛЕНИЕ без GROUP BY...

returnententityManager.createQuery("выберите новый путь.UserInformationExport(app.gid, app.lastName, app.firstName," + " (выберите новый путь.MonthlyReview(r.month, r.monthNumber, r.qualifier, r.rating) из обзора r, где r.year = :yr и r.applicationUser.id = app.id))" + " из приложения ApplicationUser, где app.id в (:ids)", UserInformationExport.class) .setParameter("год", год) .setParameter("идентификаторы", идентификаторы) .getResultList(); но выдает следующую ошибку:

java.lang.UnsupportedOperationException: getDataType() не поддерживается ConstructorNode!

в org.hibernate.hql.internal.ast.tree.ConstructorNode.getDataType(ConstructorNode.java:129)
в org.hibernate.hql.internal.ast.tree.QueryNode.getDataType(QueryNode.java:151) в org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructorArgumentTypes(ConstructorNode.java:158) в org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:133) в org.hibernate.hql.internal.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:1260) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2395) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2261) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1523) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:602) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:330) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:278) в org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:276) в org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) в org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) в org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:113) в org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:73) в org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) в org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:613) в org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) в org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:825) в org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) в jdk.internal.reflect.GeneratedMethodAccessor93.invoke (неизвестный источник) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:566) в org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerIndictionHandler.invoke(ExtendedEntityManagerCreator.java:362) по адресу com.sun.proxy.$Proxy101.createQuery (неизвестный источник) в jdk.internal.reflect.GeneratedMethodAccessor93.invoke (неизвестный источник) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:566) в org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerIndictionHandler.invoke(SharedEntityManagerCreator.java:311) по адресу com.sun.proxy.$Proxy101.createQuery(неизвестный источник)

Мне бы хотелось что-то вроде этого:
[ { "userGid": "958", "lastName":"причуда", "firstName":"причуда", "оценки" : [ { "месяц": "Январь", "номермесяца":1, «определитель»: 4, "rating":"wqfw" } ] } ]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»