Java 如何使用Hibernate将原始sql投影放入对象中?
假设我有一个以以下预测开始的查询:Java 如何使用Hibernate将原始sql投影放入对象中?,java,sql,hibernate,orm,projection,Java,Sql,Hibernate,Orm,Projection,假设我有一个以以下预测开始的查询: SELECT t.term as term, count(g.id) as amount 这是原始sql,我在Hibernate会话对象上使用createSqlQuery。我想做的是将这些投影放在一个具有“术语”和“数量”属性的对象中 对于HQL,我们可以使用“选择新类名(…)”,但这不适用于原始SQL查询 我们怎么做?我得到了一堆[LObject],我不知道该怎么处理它们。如果我能让Hibernate把它们放到某种非实体值对象中,那就太好了 谢谢!检查 假
SELECT t.term as term, count(g.id) as amount
这是原始sql,我在Hibernate会话对象上使用createSqlQuery。我想做的是将这些投影放在一个具有“术语”和“数量”属性的对象中
对于HQL,我们可以使用“选择新类名(…)”,但这不适用于原始SQL查询
我们怎么做?我得到了一堆[LObject],我不知道该怎么处理它们。如果我能让Hibernate把它们放到某种非实体值对象中,那就太好了
谢谢!检查
假设具有term和amount属性的对象只有这两个对象属性,则使用原始SQL的类似查询应返回这些对象的列表,然后您可以逐个迭代这些对象
如果我能让Hibernate将它们放入某种非实体值对象中,那就太好了
通过应用“结果转换器”,您可以告诉Hibernate从本机SQL查询返回非托管值对象。参考文档:
可以应用
ResultTransformer到本机SQL
查询,允许它返回
非托管实体
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
.setResultTransformer(Transformers.aliasToBean(CatDTO.class))
此查询指定:
- SQL查询字符串
- 结果转换器
CatDTO
已实例化
并注入NAME
和
出生名
转换为相应的
属性或字段
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
.setResultTransformer(Transformers.aliasToBean(CatDTO.class))