如果我这样做的话,映射到我的实体就没有问题了
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();