EntityManager em = getEntityManager();
em.getTransaction().begin();
Person p = em.find(Person.class, 1);
em.clear();p.setId(2); //主键策略为AUTO,数据库为MySQL
p.setName("csdn");
em.merge(p);
em.getTransaction().commit();
//.....
JPA中的merge类似Hibernate中的saveOrUpdate方法,当数据库中存在id=2的Person,在em.close()时会发送一条update语句,而当数据库中不存在id=2的Person,在em.close()时会发送一条insert语句。
请问JPA是怎么判断什么时候该发update,什么时候该发insert的?
你说的和hibernate的主键策略为native类型。
但是我刚刚的实验产生的行为并不是这样的
同样是setId(2),结果是不一样的