当前位置: 首页 > 知识库问答 >
问题:

删除数据库中的数据。分离实例

甄正信
2023-03-14

当我尝试从数据库中删除数据时:

@Override
    public void delete(PatientCard patientCard) {
        PatientCard toRemoved = em.merge(patientCard);
        em.remove(toRemoved);
    }

我得到一个错误:

但当我换成:

@Override
    public void delete(PatientCard patientCard) {
        PatientCard toRemoved = em.merge(em.find(PatientCard.class, patientCard.getId()));
        em.remove(toRemoved);
    }

数据被删除了。为什么?

我想看看实体是否得到了管理:

toRemoved = em.merge (patientCard)
    boolean a = em.contains (toRemoved);
    System.out.println (a);

我看到了真实。

那为什么呢?

em.remove(toRemoved);

在一种情况下会产生错误?

共有1个答案

丘飞
2023-03-14

分离实体是指不由任何实体管理器管理的实体,而是表示数据库中的对象。

由于它不是由实体管理器管理的,因此不能使用它来删除它。因此,您必须在实体管理器上使用search()检索它,以便它由实体管理器管理。

因此,find()在这里就足够了,因为您不需要保存更改的属性(即不需要merge())。

 类似资料:
  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中删除一个指定的数据库。 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中创建数据库。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 注意:这是一个严肃的操作,在继续删除数据库之前必须要确定是否真的执行删除操作,因为删除了数据库以后,数据库中的所有内容都将丢失,并且无

  • 主要内容:语法,实例SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。 如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。 语法 SQLite 的 DET

  • 我需要你帮我。我想在RecyclerView中通过SwipeToDelete删除数据库中的数据。 我已经有了一个从RecycleView中删除项目的Swipe类,我可以从该列表中删除项目,但不能从数据库中删除。 我尝试在NoteAdapater(回收器适配器)中调用数据库,并使用removeItem(int-position)方法删除所需的项,如下所示: 这是Main Active代码: 删除数据

  • 我仍在开发我的登录应用程序。此时,用户可以注册、登录和更新配置文件信息。数据存储在firebase实时数据库中,该装置也通过firebase工作。我想添加一个“删除配置文件”按钮,以便从firebase中删除用户信息。我弄清楚了如何从自动认证过程中删除用户。现在我尝试对Uid调用remove()函数,因此现在数据在实时数据库中被删除,但仍在Firebase身份验证中,如果删除userdata,应用

  • 我制作了一个JTable,其中填充了数据库中的数据。它从textfields中获取数据并将其添加到表和数据库中。问题是我有一个删除按钮,我让它从表本身删除选定的行(使用defaultTableModel),但它不会从实际的数据库中删除该数据。当我再次运行该程序时,删除的行再次出现在JTable中。 这可能会变得混乱,但希望有人能找出我错过了什么。帮助将会很感激,但不要,我的时间很少,不能完全大修我

  • 我以为上面的办法行得通,但它失败了。我把它放在渲染行部分。它出现了reference.remove失败。第一个参数必须是有效的函数。就像在这些房间里,它有信息,我认为这是我出错的地方,但我不知道如何去做它。谢谢。