[英]New entity with preset ID detected as “detached entity”
我有一個具有此ID定義的實體Player
@Id
@GeneratedValue
@Column(updatable=false)
private long id;
但是,有時(但不總是)我想創建一個具有預設ID的新實例。
player = new Player(...);
player.setId(externalId);
em.persist(player);
這顯然導致Hibernate將其視為獨立實體,從而引發異常
org.hibernate.PersistentObjectException:分離的實體傳遞給持久化
如何避免這種情況?
我可以刪除@GeneratedValue
並自己生成ID,例如:
begin transaction
if id not preset {
do {
id = random number
} while (id in use)
}
create player with id
commit transaction
對於事務而言,這應該是安全的,但它比讓數據庫進行處理要好。
那里出問題了。 您能否告訴我們為什么要使用固定ID? 因為您實際上是在說“請為我創建一個ID,但我永遠都不想處理”,所以有時您嘗試自己設置一個ID,這可能意味着您在破壞整個事情。
該異常可能是因為您要設置已使用的ID。 然后,當嘗試持久化時,hibernate將其檢測為與數據庫中的內容不同步(分離),因此他僅拋出該異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.