JPA 2-条件API多选查询未映射到实体

时间:2019-04-12 00:07:06

标签: java sql-server jpa jpa-2.0

如果我这样做的话,映射到我的实体就没有问题了

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)
            );

上面的multiselect返回一个原始Java对象,或更确切地说,一个对象数组。对象包含我已检索到的值,但未映射到强制转换的实体。实际上,它不会在查询调用上抛出CastException,但是当我开始尝试将该结果集用作演员表列表时,我就得到了CastExceptions。

当我使用multiselect方法检索字段子集时,就好像它不知道如何将结果集映射到实体一样。

是否不可能依靠JPA将包含部分字段的结果集映射到实体?

作为参考,这是我的查询电话:

List<Person> person = em.createQuery(query).getResultList();

0 个答案:

没有答案