没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性会话

没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性会话,hibernate,Hibernate,您好,我是spring+hiberent的新手,我正在尝试编写GenericDao,但我遇到以下异常:没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性的see my code IGenericDao public interface IGenericDao<T> { public void delete(T obj); public void saveOrUpdate(T obj); } 公共接口IGenericDao{ 公共无效删除(T obj)

您好,我是spring+hiberent的新手,我正在尝试编写GenericDao,但我遇到以下异常:没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性的see my code

IGenericDao

public interface IGenericDao<T> {
    public void delete(T obj);
    public void saveOrUpdate(T obj);
}
公共接口IGenericDao{
公共无效删除(T obj);
公共作废保存或更新(T obj);
}
通用DAOImpl

  @Transactional
  public class GenericDaoImpl<T> implements IGenericDao<T> {
    @Autowired
    private SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    protected SessionFactory getSessionFactory() {
        if (sessionFactory == null)
            throw new IllegalStateException("SessionFactory has not been set on DAO before usage");
        return sessionFactory;
    }
    @Override
    public void delete(T obj) {
        getSessionFactory().getCurrentSession().delete(obj);
    }
    @Override
    public void saveOrUpdate(T obj) {
        getSessionFactory().getCurrentSession().saveOrUpdate(obj);
    }
}
public  class IGenericServiceManagerImpl<T extends Object> implements  IGenericService<T>  {

@Autowired
IGenericDao<T> genericDao;
@Override

public void delete(T obj) {
    // TODO Auto-generated method stub
    genericDao.delete(obj);
}

@Override

public void saveOrUpdate(T obj) {
    // TODO Auto-generated method stub
    genericDao.saveOrUpdate(obj);

}
@Transactional
公共类GenericDaoImpl实现IGenericDao{
@自动连线
私人会话工厂会话工厂;
public void setSessionFactory(SessionFactory SessionFactory){
this.sessionFactory=sessionFactory;
}
受保护的SessionFactory getSessionFactory(){
if(sessionFactory==null)
抛出新的IllegalStateException(“使用前DAO上未设置SessionFactory”);
返回工厂;
}
@凌驾
公共作废删除(T obj){
getSessionFactory().getCurrentSession().delete(obj);
}
@凌驾
公共作废保存或更新(T obj){
getSessionFactory().getCurrentSession().saveOrUpdate(obj);
}
}
IGenericService

public interface IGenericService<T extends Object> {
    public void delete(T obj);
    public void saveOrUpdate(T obj);

}
公共接口IGenericService{
公共无效删除(T obj);
公共作废保存或更新(T obj);
}
IGenericServiceManagerImpl

  @Transactional
  public class GenericDaoImpl<T> implements IGenericDao<T> {
    @Autowired
    private SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    protected SessionFactory getSessionFactory() {
        if (sessionFactory == null)
            throw new IllegalStateException("SessionFactory has not been set on DAO before usage");
        return sessionFactory;
    }
    @Override
    public void delete(T obj) {
        getSessionFactory().getCurrentSession().delete(obj);
    }
    @Override
    public void saveOrUpdate(T obj) {
        getSessionFactory().getCurrentSession().saveOrUpdate(obj);
    }
}
public  class IGenericServiceManagerImpl<T extends Object> implements  IGenericService<T>  {

@Autowired
IGenericDao<T> genericDao;
@Override

public void delete(T obj) {
    // TODO Auto-generated method stub
    genericDao.delete(obj);
}

@Override

public void saveOrUpdate(T obj) {
    // TODO Auto-generated method stub
    genericDao.saveOrUpdate(obj);

}
公共类IGenericServiceManagerImpl实现IGenericService{
@自动连线
IGenericDao genericDao;
@凌驾
公共作废删除(T obj){
//TODO自动生成的方法存根
genericDao.delete(obj);
}
@凌驾
公共作废保存或更新(T obj){
//TODO自动生成的方法存根
genericDao.saveOrUpdate(obj);
}
springservlet.xml

  @Transactional
  public class GenericDaoImpl<T> implements IGenericDao<T> {
    @Autowired
    private SessionFactory sessionFactory;
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
    protected SessionFactory getSessionFactory() {
        if (sessionFactory == null)
            throw new IllegalStateException("SessionFactory has not been set on DAO before usage");
        return sessionFactory;
    }
    @Override
    public void delete(T obj) {
        getSessionFactory().getCurrentSession().delete(obj);
    }
    @Override
    public void saveOrUpdate(T obj) {
        getSessionFactory().getCurrentSession().saveOrUpdate(obj);
    }
}
public  class IGenericServiceManagerImpl<T extends Object> implements  IGenericService<T>  {

@Autowired
IGenericDao<T> genericDao;
@Override

public void delete(T obj) {
    // TODO Auto-generated method stub
    genericDao.delete(obj);
}

@Override

public void saveOrUpdate(T obj) {
    // TODO Auto-generated method stub
    genericDao.saveOrUpdate(obj);

}
xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
">
org.hibernate.dialogue.mysqldialogue
真的
更新
com.codes.gdi.model.EMP
有人帮我吗 我没有绑定到线程的Hibernate会话,并且配置不允许在这里创建非事务会话

您应该添加


(4.12.2)

关于您的配置,您完全缺少dao/ServiceBean定义,并且您没有启用注释驱动事务,将
添加到XML(请记住添加
xmlns:tx=”http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd


如果您使用的是Hibernate4,请保持DAO代码不变,但根据新类更改bean类(
org.springframework.orm.Hibernate4.HibernateTransactionManager
)并使用
org.springframework.orm.hibernate4.LocalSessionFactoryBean
构建sessionFactory。

您好,感谢我尝试添加的帮助,但我得到了引用的文件包含错误()。有关详细信息,请右键单击问题视图中的消息并选择“显示详细信息…”