Dis*_*tum 14 java eclipselink jpa-2.0
这里发生了什么?
@Stateless
@LocalBean
public class AppointmentCommentDao {
public void delete(long appointmentCommentId) {
AppointmentComment ac = em.find(AppointmentComment.class, appointmentCommentId);
if (ac != null)
{
em.merge(ac);
em.remove(ac);
}
}
@PersistenceContext
private EntityManager em;
}
Run Code Online (Sandbox Code Playgroud)
在打电话给remove我得到一个IllegalArgumentException消息是Entity must be managed to call remove: ...., try merging the detached and try the remove again.
Mik*_*unu 18
在您的情况下,不需要合并,因为在em.find和em.remove之间的任何点都不会释放ac .
通常,当实体被释放时,EntityManager的方法merge将实体作为参数并返回托管实例.作为参数给出的实体不会转换为附加.例如,这里解释了这一点:EntityManager.merge.你必须去:
AppointmentComment toBeRemoved = em.merge(ac);
em.remove(toBeRemoved);
Run Code Online (Sandbox Code Playgroud)
小智 5
试试这个:
entity = getEntityManager().getReference(AppointmentComment.class, entity.getId());
getEntityManager().remove(entity);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20516 次 |
| 最近记录: |