我有几个带有复合主键的 sql View ,我想查询它们,而且由于 Hibernate 使使用复合键变得很痛苦,所以我正在使用 createSQLQuery
。问题是这个方法只能返回一个List,我需要通过它们的索引来引用这些列。
我有没有机会做类似 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”方法返回您的自定义对象。
关于java - 在hibernate createSQlquery结果中使用sql列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605385/