【问题标题】:How to dynamically delete the rows of a table, or delete a table, with Hibernate?如何使用 Hibernate 动态删除表的行或删除表?
【发布时间】:2015-11-12 17:19:05
【问题描述】:

我在 Oracle 数据库中有一个表。

我想知道如何删除它的行,或者如何使用 Hibernate 纯粹删除表,而不是通过更改相应的映射类。我的意思是,我想在映射类之外进行,例如在主要 Java 方法中。

为了读取数据,我总是在 Hibernate 中使用原生 SQL 查询。

要写入数据,我使用session.save

但是如何从表中删除数据,或删除表?

我查看了 Hibernate 文档,但解决方案总是涉及通过添加注释来更改映射类代码...

我想要一个像我用来读写数据的解决方案:

session.createSQLQuery("...");

或者

session.save(...);

有没有这样的解决方案?

【问题讨论】:

  • 一种解决方法是创建一个为您执行此操作的数据库函数,并像常规查询一样调用它。

标签: java sql oracle hibernate hql


【解决方案1】:

HQL delete from Xyz 会有所帮助,因为如果没有 where 子句,它将影响每一行:

EntityManager em = // .. get EntityManager
em.getTransaction().begin();
em.createQuery("delete from MyTable").executeUpdate();
em.getTransaction().commit();

【讨论】:

    【解决方案2】:

    我在另一个 Stackoverflow 问题中找到了答案:

    Query to delete all rows in a table hibernate

    如果我要从中删除行的表名为 MyTable,那么答案是:

    在 HQL 中:

    session.createQuery("delete from MyTable").executeUpdate();
    

    在原生 SQL 中:

    session.createSQLQuery("delete from MyTable").executeUpdate();
    

    在发布这个问题之前,我应该在 stackoverflow 中查看更长的时间,对此我深表歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多