Сам Hibernate API не предоставляет никакого способа сделать это программно, о чем я знаю. В документах сказано, что вы можете указать уровень изоляции в качестве свойства конфигурации:
hibernate.connection.isolation - Наборы
уровень изоляции транзакции JDBC.
Проверьте java.sql.Connection для
значимые значения
Но, конечно, это относится ко всему SessionFactory
, а не только к конкретным запросам.
Соблазнительно поиграть с базовым уровнем изоляции java.sql.Connection
, но я буду очень осторожен с такими вещами: вы рискуете вступить в конфликт с собственными стратегиями блокировки hibernate, которые используют уровень изоляции JDBC для определения который LockMode
будет использоваться. Если вы измените это непосредственно в Соединении, вы можете получить странные результаты. Конечно, у вас может не быть выбора, но будьте осторожны.
«Лучшим» решением было бы использование API транзакции Hibernate Spring , который позволяет полностью и предсказуемо и надежно отделить семантику транзакции, например уровень изоляции, от API Hibernate.