从mysql表中删除所有行

5n0oy7gb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(167)

我正在尝试从mysql表中删除所有记录(46条记录)。我试过的代码。有合适的答案吗?

Session hs = connection.NewHibernateUtil.getSessionFactory().openSession();
        Criteria cr = hs.createCriteria(Bookmark.class);
        Bookmark b;
        List<Bookmark> li = cr.list();
        for (Bookmark s : li) {
            b = new Bookmark();
            b.setId(s.getId());

            Transaction tr = hs.beginTransaction();
            hs.delete(b);
            tr.commit();
            hs.flush();
            hs.close();
        }

错误

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [mypojos.Bookmark#7]
xn1cxnb4

xn1cxnb41#

你不能删除这样的对象。您首先需要从db中获取对象,然后可以使用hs.delete(b)进行删除;当您必须将更改级联到关联对象时,通常使用此选项。
在这种情况下,最好的方法是使用类似这样的hql查询。

String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();

相关问题