JPA (transaction-type = "JTA") kullanan bir java EE projem var, sağlayıcı olarak hazırda bekletme. CRUD şeylerini halletmek için fasulyemi yazıyorum. JBOSS 7 AS'de çalışan program.java.lang.IllegalArgumentException: Ayrılmış bir örneği kaldırma com.test.User # 5
Bir EntityManagerDAO vardır:
@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);
}
}
ama deleteObject
çağırmak zaman, bu istisna çıkar.
java.lang.IllegalArgumentException: müstakil bir örneği com.test.User # 5
Bu nasıl kaynaklanır ve nasıl çözebilir Çıkarma? Yalnızca geçerli işlem/bağlamda yönetilen varlıklar üzerinde çalışır.
@BalusC Em.remove'de (em.contains (varlık)? Varlık: em.merge (varlık)); , em (içeriğindeki (false) false ise, entityToBeRemoved = em.merge (varlık), entityToBeRemoved'i kaldırıyor musunuz? Em.merge (varlık) 'dan hangi getirileri kaldırıyorsunuz? –
Sorduğum sorudaki cevaba göre ihtiyacınız olan: a = em.merge (a); // iliştirilmiş öğeye birleştirme ve atama em.remove (a); // ekli öğeyi kaldır –
İyi çalınmış efendim.Bu çok doğru ve bu iyi bir şey çözüm imho. –