如何解决Java nativeQuery:具有AliasToEntityMapResultTransformer的ResultSet在地图中具有无序的列
我正在尝试将结果集作为地图获取,并成功地将其添加到地图中。但是地图键不是按照选择查询的顺序
请检查代码:
String queryString = "SELECT T1.COLUMN_11,T1.COLUMN_12,T2.COLUMN_21,T2.COLUMN_22 FROM MYSCHEMA.TABLE1 T1 INNER JOIN MYSCHEMA.TABLE2 T2 ON T1.soME_COLUMN = T2.soME_OTHER_COLUMN";
Query query = entityManager.createNativeQuery(queryString)
.unwrap(org.hibernate.query.Query.class)
.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> resultSet = queryEx.getResultList();
现在,List<Map<String,Object>> resultSet
应该看起来像下面的样子
[
{
"COLUMN_11": "VALUE11","COLUMN_12": "VALUE12","COLUMN_21": "VALUE21","COLUMN_22": "VALUE22"
},...............
]
但是列如下所示混杂在一起
[
{
"COLUMN_21": "VALUE21","COLUMN_11": "VALUE11",...............
]
我是否仍可以像 select语句中那样保留订单?
PS:无法创建模型来保存resultSet值,因为查询是 动态。因此,“ HAD TO”仅使用地图。
解决方法
尝试删除.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
。我不是Hibernate专家,但是大多数JPA实现默认情况下都会返回一个Object数组列表,该列表保留列的顺序。
另一种选择是实现自己的转换器,在其中使用LinkedHashMap而不是HashMap。 AliasToEntityMapResultTransformer使用HashMap。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。