java - 在hibernate createSQlquery结果中使用sql列名

标签 java sql hibernate jdbc

我有几个带有复合主键的 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/

相关文章:

java - 计算 JSONArray 有多少个特定的 JSONObject

java - Maven-Camel-Spring-Oracle : Error creating bean - java. lang.IllegalStateException : Could not load JDBC driver class [oracle. jdbc.driver.OracleDriver]

SQL 查询用 Sum() 加入两个查询

sql - Exec <存储过程> 非常慢

java - 我们用mvc形式链接dao实体类好不好

java - Spring Boot JPA Lazy Fetch 不起作用

java - 添加 mediaplayer release() 会使应用程序崩溃

java - 仅当使用 fill() 时,处理草图才会抛出 java.lang.AssertionError

sql - 错误显示时首先显示错误消息,然后返回(MS Sql Server)

hibernate - Grails域类中的Hibernate缓存