可以createNativeQuery的EnityManager返回resultClass即dojo类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以createNativeQuery的EnityManager返回resultClass即dojo类相关的知识,希望对你有一定的参考价值。
我可以有以下脚本:
1.我有一个实体类 - EntityClass(使用EntityTable进行映射) 2.我有一个dojo类 - DojoClass 这两个类都有相同的变量。
题:
当我调用以下方法时将返回什么:
A- entityManager.createNativeQuery("SELECT * FROM EntityTable",EntityClass.class);
B- entityManager.createNativeQuery("SELECT * FROM EntityTable",Dojo.class);
他们是对的吗?
这是一个非常不寻常的用例,我猜测只是理论上的。
我已经按照您的方式进行了配置,最值得注意的是两个实体具有完全相同的基本字段(这些是在将结果映射到类时将考虑的那些)。
我正在使用JPA 2.1和Hibernate 5.x作为引擎下的实现。
令我困惑的是,两个查询都正常运行并将结果按预期分配给每个类中的相应字段。
我更深入地了解了实现,基本上幕后发生的事情是:
- 创建一个类型为
List<Object[]>
的列表作为第一步,这是没有指定类的createNativeQuery(String)方法的标准行为。 - 使用反射设置类的字段。因此,从哪个表中提取结果并不重要..列名和类型必须匹配..
最后几点提示:
- 指定为第二个参数的类必须始终是托管实体或可嵌入
- 当我试图只查询某些列时,我遇到了缺少查询缺失列的错误。所以我想你总是要选择一切
希望这能澄清事情。
以上是关于可以createNativeQuery的EnityManager返回resultClass即dojo类的主要内容,如果未能解决你的问题,请参考以下文章
使用 entityManager.createNativeQuery(query,foo.class)
Hibernate CreateNativeQuery返回空列表
在 createNativeQuery 中使用 generate_series 时出错