私はJPA(トランザクションタイプ= "JTA")を使用してJava EEプロジェクトを持ち、プロバイダとして休止状態です。私はCRUDものを扱うために私の豆を書きます。 JBOSS 7 ASで動作するプログラム。java.lang.IllegalArgumentException:デタッチされたインスタンスを削除するcom.test.User#5
私が持っているEntityManagerDAO:
@Stateful
public class EntityManagerDao implements Serializable {
@PersistenceContext(unitName = "dtdJpa")
private EntityManager entityManager;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Object updateObject(Object object) {
object = entityManager.merge(object);
return object;
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void createObject(Object object) {
entityManager.persist(object);
}
public void refresh(Object object) {
entityManager.refresh(object);
}
public <T> T find(Class<T> clazz, Long id) {
return entityManager.find(clazz, id);
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void deleteObject(Object object) {
entityManager.remove(object);
}
}
を私はdeleteObject
を起動したときに、この例外が出てきます。
java.lang.IllegalArgumentExceptionが:これが原因とされており、どのように私はそれを解決するにはどうすればよい
分離されたインスタンスcom.test.User#5を削除しますか?
@BalusC em.remove(em.contains(entity)?エンティティ:em.merge(entity))では、 、もしem(contains(entity))がfalseなら、あなたはentityToBeRemoved = em.merge(entity)、entityToBeRemovedを削除していますか?em.merge(エンティティ)から返されたものを削除していますか? –
a = em.merge(a); //添付されたエンティティにaをマージして割り当てます em.remove(a); //添付されたエンティティを削除します –
これは非常に真実です。ソリューションimho。 –