一尘不染

在Hibernate createSQlquery结果中使用SQL列名称

hibernate

我有几个要查询的带有复合主键的sql视图,由于Hibernate使得使用复合键很麻烦,因此我正在使用createSQLQuery。问题在于此方法只能返回一个List,而我需要通过其索引来引用列。

我有什么机会可以做类似jdbc的事情,并通过其sql名称而不是其索引来引用这些列?


阅读 283

收藏
2020-06-20

共1个答案

一尘不染

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

从代码中可以看出,列表包含代表每一行的Map对象。每个Map对象将具有列名作为键,并将值作为值。

注意:这适用于SQLQuery,如果在hql查询上使用AliasToEntityMapResultTransformer而不指定别名,则将获得索引值作为键。

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

2020-06-20