【问题标题】:Delete all objects from database in hibernate Spring java在hibernate Spring java中从数据库中删除所有对象
【发布时间】:2016-12-22 18:01:42
【问题描述】:

我想使用 hibernate spring 从 xyz 表中删除 id = 1 的所有行。

我尝试了以下代码,但它没有给出错误但没有删除行 -

 Session session = (Session) getEm().getDelegate();
 String sql ="Delete from xyz where id=:id" ;
SQLQuery query  = session.createSQLQuery(sql);
query.setParameter("id", "1");
int flg = query.executeUpdate();

你能帮我删除使用休眠查询的所有行吗?

【问题讨论】:

  • flg的值是多少?
  • 它等于数据库中的计数总数。

标签: java spring hibernate oracle11g


【解决方案1】:

试试

query.setParameter("id", Long.valueOf(1));

如果您的实体是 Long 类型(理想情况下应该是)。

参考:http://www.codejava.net/frameworks/hibernate/hibernate-basics-3-ways-to-delete-an-entity-from-the-datastore

注意:该链接仅供参考。

【讨论】:

  • 删除查询中的“xyz”应该是类名,以防您不知道。
【解决方案2】:
public void deleteById(Class clazz,Integer id) {
    String hql = "delete " + clazz.getName() + " where id = :id";
    Query q = session.createQuery(hql).setParameter("id", id);
    q.executeUpdate();
}

【讨论】:

    【解决方案3】:

    尝试将您的代码包装在这样的事务中:

    Session session = (Session) getEm().getDelegate();
    Transaction tx = session.beginTransaction();
    String sql ="Delete from xyz where id=:id" ;
    SQLQuery query  = session.createSQLQuery(sql);
    query.setParameter("id", "1");
    int flg = query.executeUpdate();
    tx.commit();
    

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 2017-08-18
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多