Javafx表中有很多项目。我希望能够进行多行删除
我添加了以下代码,但是我需要关于Hibernate的建议
shiftonTable.getSelectionModel()。setSelectionMode(SelectionMode.MULTIPLE);
recursiveTimeout = setTimeout(function showNotification(){
// Here is much logic and work with indexeddb
// registration.showNotification(...)
recursiveTimeout = setTimeout(showNotification, interval)
}, 0)
我可以看到选中的项目,但是不确定如何正确地休眠以删除这些项目。
答案 0 :(得分:0)
您应该尝试org.hibernate.ScrollableResults
类来删除多个项目。以下是删除方法的示例:
public static void purgeyourRecords() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Criteria cr = session.createCriteria(EntityClass.class);
cr.add(Restrictions.eq("fieldName", fieldValue));
ScrollableResults items = cr.scroll();
int count = 0;
while (items.next()) {
EntityClass entity= (EntityClass) items.get(0);
session.delete(entity);
if (++count % 100 == 0) {
session.flush();
session.clear();
}
}
tx.commit();
} catch (HibernateException asd) {
log.debug(asd.getMessage());
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}
}
这将删除条件中的所有记录。您可以先将列表创建为cr.list
,然后将其作为变量传递。
答案 1 :(得分:0)
遍历列表,并对每个项目调用delete:
@Override
public void removeShiftOnDate(ObservableList<ShiftOnDate> itemsSelected) {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
for (ShiftOnDate item: itemsSelected) {
session.delete(item);
}
session.getTransaction().commit();
session.close();
}