我正在使用Hibernate本机方法执行存储过程,此存储过程根据另一个表ID创建列名。所以它的列看起来像这样:
| id | ......其他一些专栏... |名字| c_1 | c_2 | c_4 | c_ .. |
如果我致电Query.getResultList()
,则会返回List<Object[]>
,而我不知道列名。我必须知道列名(和相应的列索引)以继续我的进一步业务逻辑。我也不能使用EntityManager.createNativeQuery(String s, Class aClass)
,因为它不是一个POJO类。
目前我收到List<Object[]>
没有问题,但我需要,例如,Map<String,Object[]>
列名作为键,列值作为对象数组。
如何获取所有列名及其值?
答案 0 :(得分:1)
最后,找到了解决方案,我将与您分享(也许可以帮助某人)。这是我做的:
SimpleJdbcDaoSupport.getSimpleJdbcTemplate().queryForList(nativeQuery)
返回List<Map<String,Object>>
答案 1 :(得分:0)
(这只是一个想法,我还没有测试过。它需要Criteria API。)
如果您设法将结果设为List<javax.persistence.Tuple>
,则可以选择一个Tuple
并在其上调用getElements()
- 您将获得TupleElement<?>
的列表您可以致电getAlias()
。据推测这将是列名。但我不是百分百肯定,如果没有返回元组(结果),它将无法工作,但我认为值得一试。请参阅9.2. Tuple criteria queries。
对于这种方法,这可能会有所帮助: