2016-05-23 7 views
1

У меня есть метод на Java, который обернут аннотацией spring Transactional.Spring Transactional annotation, изоляция не работает для READ_UNCOMMITTED

У меня есть 2 операции внутри, один delete, другой insert. Мой оператор ввода должен полагаться на первую операцию (которая является delete), но теперь из-за первой операции еще не завершена моя ошибка вставки (уникальное ограничение). Но смешно, что, как правило, в рамках одной и той же транзакции, я должен быть в состоянии читать/видеть незавершенную операцию в той же транзакции (моя старая собственная структура способна это сделать), но это не происходит для моего сценария, вторая вставка все еще не работает, поскольку она видит, что данные еще не удалены.

Я стараюсь использовать изоляцию READ_UNCOMMITTED, но это не сработает.

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

Как это сделать в Spring framework?

ответ

3

Вообще в спящий режим, в одной и той же транзакции, while flushing(committing) it always follows a particular order.

Inserts сначала выполняется, а затем deletes выполняются во время промывки.

Так идеально в вашем случае, так как вы deleting до insert просто позвоните enitityManager.flush() явно после delete.

В качестве альтернативы также взглянуть на EntityManager.setFlushMode() метод, при котором вы можете установить промывать тип режима либо commit или auto

+1

Этот флеш режим действительно убивает меня, как же промывку по умолчанию не по порядку кода ... «его всегда следует определенному порядку », есть ли какой-нибудь документ, к которому я могу обратиться? должна быть какая-то причина для этого ... – GMsoF

+0

в соответствии с этим http://docs.oracle.com/javaee/6/api/javax/persistence/FlushModeType.html, моя конфигурация должна быть по умолчанию как «авто», откуда он не очищается до «всего выполнения запроса»? – GMsoF

+3

http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/event/def/AbstractFlushingEventListener.html#performExecutions%28org.hibernate.event.EventSource%29 – shankarsh15

 Смежные вопросы

  • Нет связанных вопросов^_^