JPA 2 - Многоэлементный запрос API критериев не сопоставляется с сущностью - PullRequest
0 голосов
/ 12 апреля 2019

У меня нет проблем с отображением моей сущности, если я просто сделаю:

query.select(root);

Я могу проверить отладчик, и набор результатов, который возвращается из моего вызова БД, является объектом, к которому я его привел.

Когда я пытаюсь выполнить многоэлементный запрос, например:

query.multiselect(
                root.get(person.key),
                root.get(person.vRace),
                root.get(person.vGender),
                root.get(person.vHair),
                root.get(person.vEyes),
                root.get(person.vWeight),
                root.get(person.vHeight)
            ).groupBy(
                root.get(person.key),
                root.get(person.vRace),
                root.get(person.vGender),
                root.get(person.vHair),
                root.get(person.vEyes),
                root.get(person.vWeight),
                root.get(person.vHeight)
            );

Вышеприведенный мультиселект возвращает примитивный Java-объект, или, вернее, массив объектов. Объекты содержат значения, которые я получил, но они не отображаются на приведенную сущность. На самом деле, он не будет вызывать CastException при вызове запроса, но как только я начну пытаться использовать этот результирующий набор в качестве списка объекта приведения, я получу CastExceptions.

Он действует так, как будто не знает, как сопоставить результирующий набор с сущностью, когда я извлекаю подмножество полей с помощью метода множественного выбора.

Разве нельзя полагаться на JPA для сопоставления набора результатов, содержащего частичные поля, с сущностью?

Для справки, вот мой запрос:

List<Person> person = em.createQuery(query).getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...