【问题标题】:Removing a detached instance移除分离的实例
【发布时间】:2013-03-28 14:07:18
【问题描述】:

我想删除一个对象给出以下错误:

javax.ejb.EJBException: java.lang.IllegalArgumentException: 删除一个 分离实例。

我的代码:

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

有没有人在使用 hibernate 简单删除对象时遇到过这个问题?

谢谢!

黛博拉

【问题讨论】:

  • 你的参数实例来自哪里?没有链接,但你为什么要实例化然后关闭你的 DAO ?我们可以看到 PersistenciaMensagemContato 内容吗?
  • 在 Hibernate 中,分离的实例意味着当前实例不与任何会话关联。因此,在删除此实例之前,您必须确保 MensagemContato 先前已保存在数据库中。
  • 你能告诉我们PersistenciaMensagemContato的样子吗?

标签: java hibernate


【解决方案1】:

您的 PersistenciaMensagemContato 实体中没有指定 ID。 Hibernate 如何知道要删除哪个引用?

【讨论】:

  • 抱歉,但我是新手。我该怎么做?
  • 每个实体必须有一个主键。该主键必须与数据库主键匹配。谷歌了解如何使用 Hibernate 进行 ORM。
【解决方案2】:

您不能删除不是来自数据库的实体。 您只能删除具有 ID 值的实体。

【讨论】:

    【解决方案3】:

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2015-04-12
      • 2013-06-06
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多