jpa2.2.10 query.unwrap(NativeQuery.class)怎么转换成set对象集合
时间: 2023-06-08 08:05:28 浏览: 245
使用JPA时@Query中的insert语句之对象传参
您好,可以使用以下代码将包装的原生查询对象转换为set对象集合:
```java
Query query = entityManager.createNativeQuery(sql);
List<Object[]> resultList = query.unwrap(NativeQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
.getResultList();
Set<Map<String, Object>> resultSet = new HashSet<>();
for(Object[] result : resultList) {
Map<String, Object> map = new HashMap<>();
for(int i = 0; i < result.length; i++) {
String columnName = query.unwrap(NativeQuery.class).getResultSetMapping()
.getScalarResultMappings().get(i).getColumnAlias();
map.put(columnName, result[i]);
}
resultSet.add(map);
}
```
这段代码使用了`Transformers`类将查询结果转换为Map对象,并使用`HashSet`来存储唯一的结果。其中,`getResultSetMapping()`方法用于获取原生查询对象的映射信息,`getScalarResultMappings()`方法用于获取查询结果的属性信息,`getColumnAlias()`方法用于获取属性别名,`getResultList()`方法用于执行查询并返回结果集。
阅读全文