我们正在使用 JPA + Spring + EJB 的 Toplink 实现。在我们的一个 EJB 中,我们有这样的东西:
public void updateUser(long userId, String newName){
User u = em.get(User.class, userId);
u.setName(newName);
// no persist is invoked here
}
所以,基本上这个updateUser()方法应该用给定的userId. 但是这个方法的作者忘记调用了em.persist(u)。
最奇怪的是它运行良好。怎么会这样?我 100% 确定如果不调用em.persist()或em.merge()无法将更改保存到数据库中。他们可以吗?有没有可能发生这种情况的情况?