我创建了使用新id保存实体的方法或通过hibernate会话更新现有的方法。当我使用下一个代码时:
try {
Session session = sessionWrapper.getSession();
sessionWrapper.beginTransaction();
if (user.getId()==null || session.get(User.class, user.getId())==null) {
return (long) session.save(user);
} else {
session.get(User.class, user.getId());
session.merge(user);
return user.getId();
}
} finally {
sessionWrapper.commit();
sessionWrapper.closeSession();
}
它工作正常,但是当我使用session.saveOrUpdate时,如果新实体生成的id增加了两个,而不是一个。为什么以及如何解决它?