Hibernate:
1、spring与hibernate整合数据提交时,出现session不一样情况就会出现:
代码:
private SessionFactory factory = null; public SessionFactory getFactory() { return factory; } public void setFactory(SessionFactory factory) { this.factory = factory; } public User save(User user){ Session session = factory.getCurrentSession(); session.save(user); session.getTransaction().commit(); return null; }
出现错误:
Stacktraces org.hibernate.HibernateException: save is not valid without active transaction org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:341) $Proxy12.save(Unknown Source) com.ssh.service.IUserService.save(IUserService.java:28) com.ssh.action.UserAction.ecut(UserAction.java:23) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
问题原因:原因是session不一样导致,开始在spring 配置文件applicationContext.xml文件中配了“hibernate.current_session_context_class=thread”未解决;
解决办法: 代码修改:
private SessionFactory factory = null; public SessionFactory getFactory() { return factory; } public void setFactory(SessionFactory factory) { this.factory = factory; } public User save(User user){ Session session = factory.getCurrentSession(); Transaction tran=session.beginTransaction(); session.save(user); tran.commit(); return null; }