Class classA{ List a; public void setA(List a) { this.a =a; } public List getA() { return this.a; } } .... classA t;//处于hibernate管理状态下面 List b=new ArraryList<>(); b.add(new Object()); /** 成功 */ t.getA().add(b);//maybe addAll(b) //如果使用t.a=b;则会失败 session.update(t)
分析原因:
t.a=b 改变了t的引用地址,重新指向的这个地址,对象不在hibernate的管理状态中。 t.getA().add(b);没改变引用,只是修改了引用内部的值
时间: 2024-12-23 12:07:50