假如我在数据库有class和student两个表,他们是一对多的关系,设置了外键,映射等该设置的都OK了。我现在创了两个student实例S1 S2里面都有数据,然后添加到class的实例C1里面,最后,我调用classDAO的保存C1,提交。最后我打开后台数据库查看,class表里面确实保存信息了,但是student表里面还是空的。我想问下是不是保存C1的时候,还要再写一句话保存S1和S2,这样两个表里面才都有数据。如果是这样的话,为什么我看到的很多书上的例子,都是只保存了C1,然后S1和S2貌似也都自动保存了。请教下hibernate会自动保存一对多的这种实例吗?

解决方案 »

  1.   

    你应该是保存student,但是在保存student之前要把class set给student
      

  2.   

    student类里面应该有class的引用,这个也得set,你只做了一个方向。
      

  3.   

    请教下hibernate会自动保存一对多的这种实例吗?
    答:会自动保存。两个方向设置好,save一个,另一方也存了。
      

  4.   

    LZ,这个你要设置一下级联策略,CascadeType这个玩意,比如CascadeType.ALL表示所有的操作都会进行级联操作,你保存的时候会将关系链的另一面也持久化到数据库。