hibernate 无法save

蘑菇蘑菇 发布于 2013/05/15 14:57
阅读 1K+
收藏 0

start方法如下

Generic DAO执行create的时候,去调用Hibernate   执行save。

Hibernate   执行save 方法的时候

代码是这样

protected Serializable _save(Object entity) {
        return getSession().save(entity);
    }
log是这样的

Hibernate: insert into classmate (address, name, phone_no, study_id) values (?, ?, ?, ?)

value为啥总是问号啊。。。

无法插入新的记录好焦躁。。。


按照楼下朋友的悉心指导。。保存了transaction,还是不行呢。。

package test;

import java.util.List;

import org.hibernate.Transaction;

import main.net.model.ClassMateEntity;
import main.net.svcimpl.ClassMateSvcImpl;

public class DaxiangTest {

	public static void main(String[] args){
		ClassMateEntity cme = new ClassMateEntity();
		cme.setName("asfdasf");
		cme.setStudyId(132);
		ClassMateSvcImpl cms = new ClassMateSvcImpl();
		Transaction t =  cms.getSession().beginTransaction();
		t.begin();
		System.out.println(cms.getSession());
		cms.getSession().save(cme);
		List<ClassMateEntity> list = cms.fetchAll();
		t.commit();
		System.out.print(list.size());
		System.out.print(list.get(0).getName());
	}
}

public class CommonSvcImpl<T ,ID extends Serializable> extends GenericDAOImpl<T, Serializable>{

        private Session session;
        public CommonSvcImpl(){
            super();
            this.setSessionFactory(HibernateUtil.getSessionFactory());
        }
        
        protected Session getSession() {
            if (session==null) {
                 return super.getSessionFactory().openSession();
            }
            return session;
        }
        
        public void setSession(Session session) {
                this.session = session;
                setSessionFactory(session.getSessionFactory());
        }
        
        public void start(){
            getSession().beginTransaction().begin();
        }
        
        public void end(){
            getSession().beginTransaction().commit();
        }

}
加载中
0
逝水fox
逝水fox

问题不是出在这个输出的地方,问号这个是JDBC的预编译语句,一般都是这样再传占位参数的。

是否是用了编程事务没有提交,或者压根没用事务。

蘑菇蘑菇
蘑菇蘑菇
回复 @逝水fox : 哥你太帅了!解决了!
逝水fox
逝水fox
回复 @zhangyouxingg : 另外想说的是你的getSession这个方法,当session==null的时候,直接就创建一个新的返回了,那么什么时候session才不为null?
蘑菇蘑菇
蘑菇蘑菇
回复 @逝水fox : 谢谢你啊!!还是不行啊!!
蘑菇蘑菇
蘑菇蘑菇
回复 @逝水fox : 哦!要保存啊!我试试!!!
逝水fox
逝水fox
回复 @zhangyouxingg : beginTransaction()返回了一个Transaction实例,你都没有保存它,后面结束的时候,怎么提交这个事务呢
下一页
0
不是小白
不是小白
你木有开启事物。。。所以插入不了。。。问号是占位符。。
蘑菇蘑菇
蘑菇蘑菇
开了的开了的
0
chenganshi
chenganshi
有报错信息把报错信息贴一下,确定获取到了session。
0
chenganshi
chenganshi

事务没有控制住,两次获取的session是不一样的!!现在的情况cms.getSession()获取到的session都是新的,并不是同一个

protected Session getSession() { 

 if (session==null) {

  setSession(super.getSessionFactory().openSession());
 }
 return session;
}

 

蘑菇蘑菇
蘑菇蘑菇
说得对,session没控制住
返回顶部
顶部