2012-09-28 38 views
3

我正在使用Hibernate本机方法执行存储过程,此存储过程根据另一个表Ids创建列名称。所以它的柱子看起来像这样:从Hibernate本机查询的结果中获取动态生成的列名称

| 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

(这只是一个想法,我没有测试它,它需要的标准API。)

如果你能得到的结果为List<javax.persistence.Tuple>,你可以采取一个Tuple并在其上调用getElements() - 你会得到一份TupleElement<?>的清单,你可以拨打getAlias()。据推测这将是列名。但是我不是100%肯定的,如果没有返回元组(结果),它将不起作用,但我认为这是值得一试的。见9.2. Tuple criteria queries

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

相关问题