本帖最后由 Fandian 于 2013-06-29 01:54:35 编辑

解决方案 »

  1.   

    再创建一个新实例,就可以正常取得了,这是为什么呢? 
    -----------------------------------------------------------------
    能说明下这个是什么意思吗?System.out.println("***********课程表->"+teacher.getCourseSet());//这儿出问题,是空的你这里打印的是内存中你定义的teacher对象,从这个对象中取值是取不到的,因为你只为它设置了name,和数据库没有什么关系,如果你想teacher.geCourseSet中能获到值,请从数据库中查询teacher信息再取值就OK了,但是我不明白 再创建一个实例就行了是什么意思? 能描述清楚点吗?
      

  2.   


    1,为什么只设置的name就不行?!当然可以只设置name了,ID是自增长的嘛。
    在this.teacherManager.save(teahher)后面,就可以打新的ID打印出来。
    System.out.println("***********老师的ID->"+teacher.getId());//这会打印出新增老师的ID。2,新创建实体就是用上面获得的ID,new一个老师。
    Teacher teacher2 = this.teacherManager.findById(id);
    teacher2.getCourseSet();//这儿就有值。
      

  3.   

    按理说coureSet是teacher的一个属性,既然对这个属性有设值,应该就可以get出现。
    为什么呢?
      

  4.   

    还是两种情况hibernate执行的sql比较一下异同吧
      

  5.   

    楼主的Course 对象确定保存成功了吗
    里面有没有Teacher 对象的ID呢
      

  6.   

    感觉可能是Hibernate的缓存原因吧,你保存的时候并没有commit,值只是存在了缓存中,并没有持久化到数据库中,取值的时候访问数据库当然是空。对Hibernate缓存没仔细学过,我也是乱讲的。
      

  7.   

    1.内存中的teacher (第一个)只是游离态对象,没有与数据库同步
    2. 当你再次查询时 Teacher teacher2 = this.teacherManager.findById(id);, teacher中集合对象从数据库中从新更新,所以你拿到了。
      

  8.   

    save方法没有持久化关联关系,反而findById可以,这个于理不合
      

  9.   

    Teacher teacher = new Teacher();
    teacher.setName(teacherName);
    this.teacherManager.save(teahher);
    这个是把teacher对象进行持久化下面几个语句也是类似,但是问题就在Course 对象在持久化后,teacher对象没有级联变化?
    楼主看下按下面的语句操作下,看看打印出来是什么结果?
    Teacher teacher = new Teacher();
    teacher.setName(teacherName);
     
    Course c1 = new Course();
    c1.setTeacher(teacher);
    c1.set(courseName1);
    this.courseMange.save(c1);
     
    teacher.getCourseSet());//看看这个会不会有值?
     
      

  10.   

     Teacher teacher = new Teacher();
    teacher.setName(teacherName);
      
    Course c1 = new Course();
    c1.setTeacher(teacher);
    c1.set(courseName1);
    sesion.save(c1);    //teacher , course 同在持久化状态,游离态下,你如何同步teacher对象??
      
    teacher.getCourseSet());将Teacher 的 course 属性 inverse=true. 即将主控方转为course, 应该可以。楼主可以试下。
    但前提还是要在sesion范围。不能是游离状态。
      

  11.   

    将Teacher 的 course 属性 inverse=true. 即将主控方转为course, 应该可以。楼主可以试下。
     但前提还是要在sesion范围。不能是游离状态。 
      

  12.   

    <set name="course"  Inverse="true"  >   
        <key column="TEACHER_ID"/>   
        <one-to-many/>   
       </set>  
      

  13.   


    c1,c2已经成功保存到数据库,而且有teacher的id
      

  14.   


    不行,提示空的teahcer id,保存c1异常。
      

  15.   

    this.courseMange.save(c1);
    把这个方法改下,这个save先保存teacher再保存course,但是要保证两个保存是同一个事务中,同一个session实例,然后再试下结果。