2009-10-19 3 views
1

Мы строго определили, какие отношения CascadeType.MERGE в нашем приложении. Это играет в нашу проверку версий (оптимистичная блокировка). Итак, наши определения CascadeType иногда имеют MERGE, а иногда и нет. Это отлично подходит для нашего приложения OLTP. Однако у нас также есть требование загрузить данные (отлично, чтобы сделать это в автономном режиме), в которых отношения могут быть разными. Я хотел бы сказать, что jpa (или eclipselink) обрабатывает каждое отношение как CascadeType.MERGE во время этой пакетной загрузки. Другими словами, я хочу, чтобы eclipselink игнорировал наши аннотации во время этой пакетной загрузки. Это возможно?программно сделать все отношения CascadeType.MERGE

Спасибо,

Бен

ответ

2

Стандарт JPA определяет два способа настройки сущностей - аннотацию, которые каждый знает, и XML-файлы. Определение в XML должно переопределять определение аннотации. Это означает, что у вас есть два варианта:

  • Написать XML-файлы вручную
  • Напишите небольшую программу, которая будет читать ваши объекты и (отражение) создание файла XML.

Вы можете найти примеры для файла orm.xml here

+0

Если я не получу какие-либо другие ответы, я принимаю это. «Напишите небольшую программу, которая будет читать ваши сущности и (путем отражения) сгенерировать XML-файл». - Я надеялся, что мне не нужно делать что-то некрасивое. Чем больше я использую JPA, тем больше я понимаю, чего не хватает! – andersonbd1

+0

Вы всегда можете сделать это вручную ... Это цена гибкости. Если бы у нас был такой ActiveRecord, как ruby, у нас было бы меньше гибкой настройки отношения между объектами и базой данных (и вы можете спорить в обоих направлениях, если это хорошо или плохо) –

+0

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

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