JPA + Spring + EJB の Toplink 実装を使用しています。EJB の 1 つには、次のようなものがあります。
public void updateUser(long userId, String newName){
User u = em.get(User.class, userId);
u.setName(newName);
// no persist is invoked here
}
したがって、基本的にこのupdateUser()
メソッドは、指定された .xml でユーザーの名前を更新することになっていますuserId
。しかし、このメソッドの作成者は を呼び出すのを忘れていましたem.persist(u)
。
そして最も奇妙なことは、それがうまく機能することです。どうしてですか?em.persist()
呼び出さないem.merge()
と、変更がデータベースに保存される可能性がないことを100%確信していました。彼らはできますか?これが発生するシナリオはありますか?