гибернация и удаление всех

Каков наилучший способ удалить все строки в таблице в Hibernate ?

Если я переберу коллекцию и вызову сеанс . delete () , насколько мне известно, он не работает.

Если я использую другую опцию session.createQuery ("delete ...") , это не влияет на контекст постоянства.

Когда мне следует использовать эти методы, если нет лучшего варианта?

33
задан ROMANIA_engineer 12 November 2015 в 21:07
поделиться

3 ответа

  • , если вам нечего каскадировать, используйте HQL delete DELETE FROM enityName
  • , если у вас есть каскады, выполните итерацию коллекции и удалите каждую по отдельности.

Проблема заключается в том, что спящий режим обрабатывает каскады внутри, а не оставляет это базе данных. Таким образом, отправка запроса не вызовет внутренние каскады, следовательно, у вас будут несоответствия / сироты.

Если производительность настолько важна (в конце концов, усечение таблицы - это не каждый день), тогда вы можете иметь более одного удаления HQL для каждого каскада, то есть обрабатывать каскады вручную.

24
ответ дан 27 November 2019 в 18:21
поделиться
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();
6
ответ дан 27 November 2019 в 18:21
поделиться

Вы можете использовать HQL для таблицы усечения

public int hqlTruncate(String myTable){
    String hql = String.format("delete from %s",myTable);
    Query query = session.createQuery(hql)
    return query.executeUpdate();
}
24
ответ дан 27 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: