[英]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.