大家好,我有两个表,假设为t1,t2,字段分别为t1表:t1_id,t1_name,t2_id;t2表:t2_id,t2_name,其中t1和t2是一对多的关系,假设t1表中有3条数据,
t1_id     t1_name    t2_id
1         name1      1
2         name2      1
3         name3      2我用Hibernate获取t1表的数据(不使用延时加载)后,发现在t1表中前面两条数据(t2_id相同)对应的实体类中的t2实体类对象是同一个对象,那么当我循环这个集合,修改内容时,比如修改第一条记录的t2对象,那么第二条数据的t2对象也同时被修改了。请问怎样能让他们不指向同个对象,应该如何解决???

解决方案 »

  1.   

    你修改t1表的时候把t1_id条件加上
      

  2.   

    我不是要修改t1表,我是从t1表获取数据后得到一个List,循环修改这个集合里面的t2所对应的实体类,只是在内存中修改对象,这时List中的第一个对象和第二个对象的t2属性对应的对象是同一个,修改任一个,两个都同时修改了
      

  3.   

    额,t1和t2一对多?哪你的表记录t1表怎么出现了相同的t2_id,这关系是多对多了,整一个ORM映射都搞错了吧,3张表<many-to-many>吧
      

  4.   

    如 t2_id 为1 时,t2表中是同一个对象呀,一修改当然同时修改了。LZ 的最终目的是想修改什么?
      

  5.   

    如果修改t1 中的消息,可根据ti_id修改,若想修改t2表中的对象,则直接到t2表中修改,应该不用循环吧
      

  6.   

    朋友,在hibernate中,2个实体类是否相等,是通过判断是否指向同一条数据库数据的,所以你这里无论是t1_id是1 对应的t2,还是t1_id是2对应的t2,都是同一个对象.所以你的修改当然会影响.