我们正在使用 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()
无法将更改保存到数据库中。他们可以吗?有没有可能发生这种情况的情况?