没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性会话
您好,我是spring+hiberent的新手,我正在尝试编写GenericDao,但我遇到以下异常:没有绑定到线程的Hibernate会话,并且配置不允许创建非事务性的see my code IGenericDao没有绑定到线程的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)
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。您好,感谢我尝试添加的帮助,但我得到了引用的文件包含错误()。有关详细信息,请右键单击问题视图中的消息并选择“显示详细信息…”