hibernate错误Found shared references to a collection

hibernate异常Found shared references to a collection

 


    两个对象共享了同一个集合对象,在hibernate提交事务时会抛这个异常。


例如:

Set<Person> persons=new HashSet<Person>();
persons.add(new Person());
persons.add(new Person());
persons.add(new Person());

Group group1=new Group();
group1.setPerson=persons;

Group group2=new Group();
group2.setPerson=group1.getPerson()
 

       出现这种情况的原因主要是对java的赋值不明确,java中的赋值操作是引用赋值,也就是说在 Java 中执行A=B,实际上是把B所指向的值的地址复制给引用A,此时A和B虽然为两个不同的引用,但是都指向同一个对象。将一个对象引用赋值给另一个对象引用时,没有创建该对象的一个拷贝,而是仅仅对引用的一个拷贝。