JPA API 的EntityManager 以及Hibernate API的Session都有一个merge()方法,它们的作用相同,能够把一个游离对象的属性复制到一个持久化对象中。
当Session用update()方法关联一个游离对象时,如果在持久化缓存中已经存在一个同类型的并且OID相同的持久化对象,那么update()方法会抛出NonUniqueObjectException:
customer1.setName("Jack");//假定customer1为游离对象,OID为1
Session session=sessionFactory.openSession();
tx = session.getTransaction();
tx.begin(); //开始一个事务
//session加载OID为1的Customer持久化对象
Customer customer2=session.get(Customer.class, Long