unwrap : 自定义封装实体
setResultTransformer: 设置返回实体类型
// 运行原始SQL, 返回指定类型的对象列表
public static <T> List<T> getEntityList(EntityManager em, String sql, Class<T> clazz){
List<T> rows = em.createNativeQuery(sql)
.unwrap(org.hibernate.Query.class)
.setResultTransformer(Transformers.aliasToBean(clazz)).list();
return rows;
}
// 直接运行 Query, 返回 Entity List
public static <T> List<T> getEntityList(Query query, Class<T> clazz){
List<T> rows = query
.unwrap(org.hibernate.Query.class)
.setResultTransformer(Transformers.aliasToBean(clazz)).list();
return rows;
}
/**
* 运行原始 SQL, 返回记录集 List<Map>(), 通过字段名, 获取相应内容
* @param em : EntityManager 对象
* @param sql: SQL 脚本
* @return List<Map>()
*/
@SuppressWarnings("unchecked")
public static List<Map> getMapList(EntityManager em, String sql){
Query query = em.createNativeQuery(sql);
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return (List<Map>)query.getResultList();
}