Pet*_*rtu 5 java hibernate jpa
我正在使用 JPA 将实体持久化到我的数据库中。Id 列由 Persistable 类表示
@MappedSuperclass
public class Persistable {
@Id
@GeneratedValue(generator = "CustomGenerator")
@GenericGenerator(name="CustomGenerator", strategy = "parohia.imported.domain.UseExistingOrGenerateIdGenerator")
Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
Run Code Online (Sandbox Code Playgroud)
}
我的自定义生成器是这样的:
public class UseExistingOrGenerateIdGenerator extends IdentityGenerator implements IdentifierGenerator {
@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
// TODO Auto-generated method stub
Serializable id = session.getEntityPersister(null, object)
.getClassMetadata().getIdentifier(object, session);
return id != null ? id : super.generate(session, object);
}
Run Code Online (Sandbox Code Playgroud)
}
我的目标是使用该 id 保留具有 id 的实体,以及使用生成的 id 保留没有 id 的实体。这可能吗?
EntityManager entityManager = databaseService.getEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(new Persoana(5000L,"test","test"));
entityManager.getTransaction().commit();
entityManager.close();
Run Code Online (Sandbox Code Playgroud)
当持久化一个没有设置 id 的实体时,一切正常。但是当一个 id 被设置时,我得到
org.hibernate.PersistentObjectException:分离的实体传递给持久化
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |