从Hibernate本机查询的结果中获取动态生成的列名

时间:2012-09-28 18:15:36

标签: java sql-server-2008 hibernate

我正在使用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[]>列名作为键,列值作为对象数组。

如何获取所有列名及其值?

2 个答案:

答案 0 :(得分:1)

最后,找到了解决方案,我将与您分享(也许可以帮助某人)。这是我做的:

答案 1 :(得分:0)

(这只是一个想法,我还没有测试过。它需要Criteria API。)

如果您设法将结果设为List<javax.persistence.Tuple>,则可以选择一个Tuple并在其上调用getElements() - 您将获得TupleElement<?>的列表您可以致电getAlias()。据推测这将是列名。但我不是百分百肯定,如果没有返回元组(结果),它将无法工作,但我认为值得一试。请参阅9.2. Tuple criteria queries

对于这种方法,这可能会有所帮助: