在hibernate createSQlquery结果中使用sql列名

Ric*_*rdo 20 java sql hibernate jdbc

我有几个我想要查询的复合主键的sql视图,而且由于Hibernate使用复合键很难,我正在使用createSQLQuery.问题是这个方法只能返回一个List,我需要通过索引来引用colums.

我有可能做一些像jdbc这样的事情并通过他们的sql名称而不是他们的索引来引用列吗?

Adi*_*Adi 47

Query query=session.createSQLQuery("your query");
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=query.list();
Run Code Online (Sandbox Code Playgroud)

正如您可以从代码中找到的那样,该列表包含表示每行的Map对象.每个Map对象都将列名作为键,值作为值.

注意:这适用于SQLQuery,如果您在hql查询上使用AliasToEntityMapResultTransformer而未指定别名,则会将索引值作为键.

如果您再次将aliasToValueMapList转换为POJO列表,我建议您创建自己的 ResultTransformer并从'transformTuple'方法返回自定义对象.