我是Spring和Hibernate的新手。 我创建了实体User和DAO - UserHibernateDao。 我想测试hibernate如何在简单的java-class中使用public static void main:
public class Starter {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("/org/jtalks/jcommune/model/entity/applicationContext-dao.xml");
Dao<User> uhd = (Dao) context.getBean("userDao");
User user = new User();
user.setNickName("UserName");
uhd.saveOrUpdate(user);
}
}
但我收到了错误
信息:使用Hibernate SessionFactory的DataSource [org.springframework.jdbc.datasource.DriverManagerDataSource@17b4703]进行HibernateTransactionManager 线程“main”中的异常org.springframework.orm.hibernate3.HibernateSystemException:没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的;嵌套异常是org.hibernate.HibernateException:没有Hibernate会话绑定到线程,并且配置不允许在这里创建非事务性的 在org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
我知道我需要创建类似会话和事务的东西,但我不知道我应该怎么做。
my config User.java UserHibernateDao.java Full Project
由于
答案 0 :(得分:1)
将@Transactional注释添加到DAO的方法中。
这将启动交易上下文。
import org.springframework.transaction.annotation.Transactional;
@Transactional
public User getUser(int id) {
..
}
答案 1 :(得分:1)
我建议您阅读此reference on Spring and Transaction Management,因为它可以帮助您了解如何设置这一切。