TGViewer
Библиотека джависта | Java, Spring, Maven, Hibernate Библиотека джависта | Java, Spring, Maven, Hibernate @javaproglib · 22K subscribers
Post #7884 902
🌞 Hibernate выполняет SQL не в том порядке, в котором ты его написал

Код читается сверху вниз, а Hibernate так не работает. При flush'е Hibernate складывает все действия в ActionQueue и выполняет их в строго фиксированном порядке по типу операции, а не по порядку вызова в коде:

1. orphan removal
2. INSERT
3. UPDATE
4. удаление коллекций
5. обновление коллекций
6. вставка коллекций
7. DELETE


Классический пример с unique-ограничением:


repo.delete(oldRow); // (1) в коде сначала удаляем
repo.save(newRow); // (2) потом вставляем с тем же unique-значением
// commit -> ConstraintViolationException


На flush Hibernate переставит это в INSERT → DELETE. Вставка отработает до удаления, ловит конфликт по уникальному ключу, и падает, хотя в твоём коде последовательность была валидной.

🟡 Варианты решения:

— явный flush() между операциями, чтобы зафиксировать порядок;
— deferred (отложенные) constraints на стороне БД;
— пересмотр модели, чтобы коллизии в принципе не возникало.

Главное не считать, что порядок методов = порядок SQL. Это не так (для Hibernate).

══════ Навигация ══════
Вакансии • Задачи • Собесы

🐸 Библиотека джависта

#CoreJava
  • ❤ 8
  • 👍 8
  • 👾 1
More from @javaproglib
  1. Sep 25, 2026══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библиотека джависта
  2. Sep 24, 2026⚡️ Spring Boot 3 → 4: гайд по миграции Spring Boot 4 приносит Spring Framework 7, Security…
  3. Sep 23, 2026⚙️ В чем разница между балансировщиками нагрузки, обратными прокси и API-шлюзами? 1️⃣ Бала…
  4. Sep 22, 2026🔥 Java 27 вышла — и там есть что обсудить 15 сентября вышел JDK 27. Среди заметных измене…
  5. Sep 21, 2026⌛ Сохраняйте шпаргалку по OAuth ══════ Навигация ══════ Вакансии • Задачи • Собесы 🐸 Библ…
  6. Sep 20, 2026🧠 Почему a.age() - b.age() может сломать сортировку Часто встречается такой Comparator: l…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →