我正在尝试将结果集作为地图获取,并且成功地将其添加到地图中。但是地图键不是按照选择查询的顺序
请检查代码:
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_12": "VALUE12",
"COLUMN_11": "VALUE11",
"COLUMN_22": "VALUE22"
},
...............
]
无论如何,我可以保留选择语句中的顺序吗?
PS:由于查询是动态的,因此无法创建模型来保存resultSet值。因此,“ HAD TO”仅使用地图。
尝试删除.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
。我不是Hibernate专家,但是大多数JPA实现默认情况下都会返回一个Object数组列表,该列表保留列的顺序。
一种替代方法是实现您自己的转换器,在其中使用LinkedHashMap而不是HashMap。AliasToEntityMapResultTransformer使用HashMap。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句