我正在尝试从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]
1条答案
按热度按时间xn1cxnb41#
你不能删除这样的对象。您首先需要从db中获取对象,然后可以使用hs.delete(b)进行删除;当您必须将更改级联到关联对象时,通常使用此选项。
在这种情况下,最好的方法是使用类似这样的hql查询。