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(); }