测试代码:
Script sc = new Script();
sc.setName("2");
// new ScriptManage().save(sc);
ScriptDAO sdao = new ScriptDAO(null, null);
sdao.save(sc);dao中的save方法:public void save(Script transientInstance) {
log.debug("saving Script instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}没有insert语句输出,我配置了showsql = true的,我其他的dao中的save方法有的可以,到底是怎么回事???
Script sc = new Script();
sc.setName("2");
// new ScriptManage().save(sc);
ScriptDAO sdao = new ScriptDAO(null, null);
sdao.save(sc);dao中的save方法:public void save(Script transientInstance) {
log.debug("saving Script instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}没有insert语句输出,我配置了showsql = true的,我其他的dao中的save方法有的可以,到底是怎么回事???
解决方案 »
- 小小菜鸟用Swing做的管理工具界面(含源代码)。
- hibernate可以管理SQL Server中xml类型的数据吗?
- 如何比较两个bean的值是否全部都一样
- struts2有exceptionp-mapping映射,谁用过啊?
- oracle怎么下载?
- 一个程序员的困惑
- addButton()和panel.add()什么区别
- 用struts实现数组的读取和修改,实在调不出来了。
- 高分_在线等
- JB开发EJB一定要有borland application server吗???
- 请教高手们我遇到的一个spring acegi的奇怪问题
- hibernate中session.connection()这个方法过期了
后面测试,都输出来了
不用事务前面加这个试试:
getSession().connection().setAutoCommit(true);当然这么做一般不提倡。大多数是这样的:
session.beginTransaction();
session.save(pojo);
session.getTransaction.commit();
事务呢?
事务结束后才真正进数据库。
[/Quote]
最后加上 getSession().beginTransaction().commit();
确实可以打印出来,并存到数据库。问题是,如果我在dao里面加这个的话,会与下面的冲突:
package com.jadecenter.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Transaction;import com.jadecenter.hibernate.HibernateSessionFactory;public class HibernateFilter implements Filter {
private static Log log =LogFactory.getLog(HibernateFilter.class); public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
Transaction t = HibernateSessionFactory.getSession().beginTransaction();
try{
//System.out.println("Filter");
chain.doFilter(request, response);
t.commit();
}catch(ServletException ex){
t.rollback();
throw ex;
}catch(IOException e){
t.rollback();
throw e;
} } public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub }}配置文件web.xml:
<!-- hibernate过滤器 -->
<filter>
<filter-name>hibernate</filter-name>
<filter-class>
com.jadecenter.filter.HibernateFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernate</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
log.debug("saving Script instance");
HttpSession session = getSession();
try {
session.save(transientInstance);
session.flush();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
} finally{
session.close();
}
}
如果当然线程对应的session已经存在,直接使用就好了。
OpenSessionInviewFilter就是这么做的,你自己写的话,应该跟这个差不了
多少吧