package com.utils; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.transform.Transformers; public class BaseSql { @PersistenceContext private EntityManager em;// 类似hibernate session //给子类用的 private EntityManager getEntityManager() { return em; } @SuppressWarnings("unchecked") public List createSQLQuery(String sql, Map paramMap, Class cls) { Session session = getEntityManager().unwrap(Session.class); SQLQuery query = session.createSQLQuery(sql); if (cls != null) { query.addEntity(cls); } if (paramMap != null && paramMap.size() > 0) { for (String key : paramMap.keySet()) { query.setParameter(key, paramMap.get(key)); } } // query.setResultTransformer(null==cls? Transformers.ALIAS_TO_ENTITY_MAP : // Transformers.aliasToBean(cls)); List list = query.list(); List> maplist = (List>) list; return list; } @SuppressWarnings("unchecked") public List createSQLQuery(String sql, Map paramMap) { Session session = getEntityManager().unwrap(Session.class); SQLQuery query = session.createSQLQuery(sql); if (paramMap != null && paramMap.size() > 0) { for (String key : paramMap.keySet()) { query.setParameter(key, paramMap.get(key)); } } // query.setResultTransformer(null==cls? Transformers.ALIAS_TO_ENTITY_MAP : // Transformers.aliasToBean(cls)); List list = query.list(); return list; } @SuppressWarnings("unchecked") public List> createSQLQueryMap(String sql, Map paramMap) { Session session = getEntityManager().unwrap(Session.class); SQLQuery query = session.createSQLQuery(sql); if (paramMap != null && paramMap.size() > 0) { for (String key : paramMap.keySet()) { query.setParameter(key, paramMap.get(key)); } } // query.setResultTransformer(null==cls? Transformers.ALIAS_TO_ENTITY_MAP : // Transformers.aliasToBean(cls)); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //List list = query.list(); List> resultList = query.getResultList(); return resultList; } }