Hibernate保存实体,即使它们已经存在,因为生成的id



我正在与用户进行应用程序。用户有一个id,该id使用以下Hibernate注释自动分配:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id

这一切都很好,但问题是,每次我运行应用程序(同时添加相同的用户),它分配一个新的id给用户,不管用户是否已经存在。

我能做些什么,使现有的用户不会得到一个新的id每次我运行应用程序,而不必请求所有用户单独检查他们的用户名?

提前感谢。

编辑

更多的代码示例(这里我只写相关的代码)。

用户:

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
// more code here
}

带有保存功能的User hibernate类:(会话在Main中打开并交给构造函数)。


public class UserDAOHibernate implements GebruikerDAO {
private Session session;
public UserDAOHibernate(Session session) {
this.session = session;
}
@Override
public boolean save(User user) {
try {
if (this.findById(user.getId()) == null) {
Transaction transaction = session.beginTransaction();
session.save(user);
transaction.commit();
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
// more code here
}

上面我根据id检查用户是否已经存在的代码不起作用,因为用户不断获得新的id。因此,这个函数检查是否存在id = 2的用户,而已经存在的用户id = 1。

在主要:

// lots of code
User user = new User("Stijuh");
// more code here
UserDAOHibernate udao = new UserDAOHibernate(session);
udao.save(user);

当您想要更新时,在保存对象之前,您必须设置id字段。这样Hibernate就不会生成一个新的

相关内容