今天在进行spring整合hibernate的时候进行一个小测试,想要通过getHibernateTemplate().save()方法来存储对象进入数据库
public class UserDao extends HibernateDaoSupport{
public UserDao () {}
public void save(User user) {
getHibernateTemplate().save(user);
}
@Test
public void testUser(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-dao.xml");
UserDao userDao = (UserDao ) ac.getBean("userDao");
User user = (User) ac.getBean("user");
user.setId(1L);
user.setAge(20);
user.setName("张三");
UserDao.save(user);
}
}
却发现 getHibernateTemplate().save(user) 无法将数据成功存储到数据库中,且报错信息为:无法对只读信息进行读写。
于是百度了半天尝试了各种方法,有的人说需要开启事务,但是开启事务的前提是获取到session才能开启事务,那这样getHibernateTemplate().save(user)就没有太大的意义了,所以放弃开启事务的这种方法,还有其他各种说配置文件加上某些信息或者在web.xml添加配置信息等等,都无法将信息插入。
最后终于发现了解决办法:
- 直接看代码,加一个setCheck