小弟遇到了以下奇怪的问题.
我要批量存储一些数据,数据中的一些属性是要用到另外表中相关联的数据.
这就要存储的时候先查询,然后再存储,(关联,一对多,)存储多的一端,
第一次存储时会把一的一端的数据查出来,并且进行存储,但是第二次的时候查出的一的一端的数据是空的.只有第一次有值,
这是为什么呢?有哪们高手们帮忙解决一下.
Hibernate中的缓存机制是怎么做的呢?这个是不是缓存呢?第二次的时候为什么没有查询数据库呢?

解决方案 »

  1.   

    我的循环是在Action层进行循环的.Session.save()是在DAO层存储的.所以Hibernate第二次以后的查询是空的.
    高手们帮下小弟吧!!
      

  2.   

    我的循环是在Action层写的,存储是在DAO层写的,所以第二次往后的查询都查不到结果.
      

  3.   

    存多的一边,一那边对应的对象不必查出来,只需要new个对象,然后给这个对象的id赋值就可以了。然后使用多的一端对象,set一下一的这端,保存多这端就可以了。比如学生Student和班级Classes的保存。
    student.setXXXX();
    student.setYYYY();
    Classes classesObj = new Classes();
    classesObj.setId(123);//该班机的id
    student.setClasses(classesObj);
    Session.save(student);