我有几个要查询的带有复合主键的sql视图,由于Hibernate使得使用复合键很麻烦,因此我正在使用createSQLQuery。问题在于此方法只能返回一个List,而我需要通过其索引来引用列。
createSQLQuery
我有什么机会可以做类似jdbc的事情,并通过其sql名称而不是其索引来引用这些列?
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”方法返回自定义对象。