SpringBoot获得hibernate的session

SpringBoot获得hibernate的session

我的业务需求是需要执行自定义sql,由于springboot对hibernate封装了

所以我们可以通过如下方法获得session

我们只需要注入EntityManager即可

如下代码片段

@Transactional
public abstract class BaseServiceImpl<T extends BaseEntity, ID extends Serializable> implements IBaseService<T, ID> {

    public abstract IBaseDao<T, ID> getBaseDao();
	@PersistenceContext
    private EntityManager entityManager;

然后按照如下方法使用

    /**
     * 
    * @Title: createTable 
    * @Description: TODO(创建表) 
    * @param @param sql    设定文件 
    * @return void    返回类型 
    * @throws
     */
	public void createTable(String sql) {
		 ((HibernateEntityManager)entityManager)
		 	.getSession()
		 	.createSQLQuery(sql)
		 	.executeUpdate();
	}
	
	/**
	 * 
	* @Title: selectTable 
	* @Description: TODO(查询数据) 
	* @param @param sql
	* @param @return    设定文件 
	* @return List<SysBasedClock>    返回类型 
	* @throws
	 */
	public List<SysBasedClock> selectTable(String sql) {
		 List<SysBasedClock> list = ((HibernateEntityManager)entityManager)
		 	.getSession()
		 	.createSQLQuery(sql).addEntity(SysBasedClock.class)
		 	.list();
		return list;
	}



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img