2014-12-31 1 views
0

Я использую атрибут JPA и @Version для объекта Entity Entity.JPA значение @Version перед сохранением

Дело в том, что у меня есть поле «ENTITY_VERSION» в DB, ​​сопоставленное с @Version, но также у меня есть ENTITY_VERSION в xml, представляющем весь объект в виде blob.

Значение @version сам созданный сразу после записи сохраняется: Таким образом, XML всегда будет грязным ....

Например:

  1. Первой Сохранить объект XML «х "(сущность сохраняется с версией 1, например)
  2. Сохранять объект« x »(версия -ENTITY_VERSION - автоматически помещается 2).
  3. В таблице объекта х будет иметь поле ENTITY_VERSION 2, но для XML в «1»

Я пытался обновить XML с помощью @PrePersist, получая значение @version, но всегда значение - старое.

В любом случае, чтобы получить значение @Version перед сохранением?

+0

Не могли бы вы описать ваш прецедент? Вы сохраняете ту же информацию в таблице db и в xml (где-то?)? – zbig

+1

В вашем случае версия всегда будет +1 по сравнению с текущим значением db до обновления (конечно, если во время обновления ничего не происходит). Но вам действительно нужно, чтобы атрибут версии был привязан к XML? Это не бизнес-область, и если вы хотите отслеживать изменения, для этого существуют другие механизмы. –

+0

@PredragMaric поражает гвоздь на голове. Поле версии привязано к БД. Экспорт его не имеет смысла. –

ответ

2

Поле @Version увеличивается только после успешного совершения транзакции. Это по дизайну. Но это прирост.

Вы можете точно знать, что единственный способ для успешной транзакции состоит в том, чтобы поле @Version было одинаковым в базе данных и в вашей организации во время транзакции. Из-за этого и того факта, что версия будет увеличена, вы также точно знаете, какое значение она будет иметь после успешного совершения (X + 1). Это значение, которое вы должны поместить в свой xml для начала.

Знайте, однако, что если транзакция вернется, ваш xml также будет загрязнен.

+0

Спасибо, но после откат xml (хранится в db) тоже будет откат, поэтому я думаю, что проблем не будет. Да, я думаю, что лучший способ - установить xml fiel на X + 1 ..... – Azimuts

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

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