我正在與用戶一起制作應用程式。用戶有一個 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
}
具有保存功能的用戶休眠類:(會話在 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);
uj5u.com熱心網友回復:
當你想更新時,在保存物件之前,你必須設定 id 欄位。這樣 Hibernate 不會生成一個新的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334433.html
標籤:爪哇 PostgreSQL 休眠
上一篇:postgresql的pageinspectb-tree函式結果的解釋在哪里?
下一篇:在表列中查找每組最頻繁的值
