Каков наилучший способ удалить все строки в таблице в Hibernate ?
Если я переберу коллекцию и вызову сеанс . delete ()
, насколько мне известно, он не работает.
Если я использую другую опцию session.createQuery ("delete ...")
, это не влияет на контекст постоянства.
Когда мне следует использовать эти методы, если нет лучшего варианта?
DELETE FROM enityName
Проблема заключается в том, что спящий режим обрабатывает каскады внутри, а не оставляет это базе данных. Таким образом, отправка запроса не вызовет внутренние каскады, следовательно, у вас будут несоответствия / сироты.
Если производительность настолько важна (в конце концов, усечение таблицы - это не каждый день), тогда вы можете иметь более одного удаления HQL для каждого каскада, то есть обрабатывать каскады вручную.
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();
Вы можете использовать HQL для таблицы усечения
public int hqlTruncate(String myTable){
String hql = String.format("delete from %s",myTable);
Query query = session.createQuery(hql)
return query.executeUpdate();
}