以下实体在删除时抛出和错误:
实体:
@Entity
@NamedQueries({
})
public class Server {
//some attributes
}
我有以下非常简单的 JUnit 测试,它执行以下操作:
- 实体服务器已创建
@Transactional 公共类 ServerDao { 公共服务器更新(服务器实体,长用户 ID){ entity.setDeleted(false); 如果(实体.getId()> 0){ 如果(用户 ID > 0){ entity.setUpdated(new Date()); entity.setUpdatedby(usersDao.get(userId)); } em.merge(实体); } 别的 { 如果(用户 ID > 0){ entity.setInserted(new Date()); entity.setInsertedby(usersDao.get(userId)); } em.persist(实体); } 返回实体; } }
实体服务器已删除
...同道
公共无效删除HardJUnit(服务器实体){ em.remove(实体); }
这将引发如下异常:
org.apache.openjpa.persistence.ArgumentException:您无法对分离的对象“org.apache.openmeetings.persistence.beans.basic.Server-1”执行删除操作。
如果我将删除方法更改为:
public void deleteHardJUnit(Server entity) {
if (entity.getId() > 0) {
em.refresh(entity);
em.remove(entity);
}
}
一切“似乎”都按预期工作,没有抛出异常并且记录从数据库中删除。
但是我不确定这应该是什么意思,我们真的需要在删除之前刷新每个实体吗?因为我之前已经多次使用 EntityManager.delete 而不需要刷新实体。