2013-03-28 5 views
2

Я хочу, чтобы удалить объект выдает следующую ошибку:Удаление отдельностоящий экземпляра

javax.ejb.EJBException: java.lang.IllegalArgumentException: Removing a detached instance.

Мой код:

public void remover(MensagemContato param) { 
    PersistenciaMensagemContato pParam = new PersistenciaMensagemContato();  
    pParam.delete(param); 
    pParam.close(); 
} 

Кто-нибудь сталкивался с этим проблемы в простое удаление объекта с помощью спящий режим?

Спасибо!

Дебора

+0

Где ваш экземпляр пар пришли? Нет ссылки, но почему вы инициируете, а затем закрываете свой DAO? Можем ли мы увидеть контент PersistenciaMensagemContato? – Gab

+0

В Hibernate отдельный экземпляр означает, что текущий экземпляр не связан ни с одним сеансом. Таким образом, перед удалением этого экземпляра вы должны убедиться, что MensagemContato ранее сохранялась в базе данных. – Dimitri

ответ

1

Там нет ID, указанный в вашем PersistenciaMensagemContato лица. Как Hibernate узнает, какую ссылку удалить?

+0

Извинения, но я новичок в этом. Как мне это сделать? – Deb

+0

Каждая сущность ** должна иметь ** первичный ключ. Этот первичный ключ должен соответствовать первичному ключу базы данных. Google о том, как делать ORM с Hibernate. –

0

Вы не можете удалить сущность, которая не поступает из базы данных. Вы можете удалять только объекты с идентификационными значениями.

-1

This is a good tutorial.... http://www.tutorialspoint.com/hibernate/hibernate_examples.htm

public void deleteEmployee (Integer EmployeeID){ 
    Session session = factory.openSession(); 
    Transaction tx = null; 
    try { 
     tx = session.beginTransaction(); 
     Employee employee = 
        (Employee) session.get(Employee.class, EmployeeID); 
     session.delete(employee); 
     tx.commit(); 
    } catch (HibernateException e) { 
     if (tx != null) tx.rollback(); 
     e.printStackTrace(); 
    } finally { 
     session.close(); 
    } 
} 
Смежные вопросы