Как я могу отложить фактическую вставку БД моего bean-компонента CMP2.1 в JBoss 5.1? - PullRequest
0 голосов
/ 12 августа 2010

Я мигрирую приложение Weblogic 9 в JBoss 5.1 и столкнулся со следующей проблемой:

Сеансовый ejb управляет сущностями CMP 2.1. Они вставляются во время вызова метода MyEntityLocalHome.create (). Поскольку таблица базы данных имеет ограничения «не ноль», некоторые поля, которые обычно устанавливаются после вызова метода create (), не устанавливаются, и вставка завершается неудачей.

Я знаю, что если менеджер вызвал создание (myNotNullField); Метод, передав правильные параметры, проблема будет решена. К сожалению, менеджер использует слой, который во время выполнения обнаруживает, какой * LocalHome и какой метод create () должен быть вызван (посредством самоанализа), а метод create обнаруживается с использованием полей PK объекта. Это означает, что слой не может найти методы create () с параметрами, которые не являются частью PK.

В документах JBoss я нашел параметр (insert-after-ejb-post-create), который позволяет мне отложить вставку после метода ejbPostCreate (...), но это тоже не решает мою проблему поскольку вызов LocalHome.create () по-прежнему возвращается после вставки в БД.

Как я могу отложить фактическую вставку в БД до конца транзакции, чтобы менеджер мог установить поля "не ноль"? Поскольку приложение работает в Weblogic 9, я полагаю, что такая опция существует в WLS ... существует ли этот параметр в Jboss 5.1?

Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 23 августа 2010

Это было сделано с помощью конфигурации cmp2.x jdbc2 в standardjboss.xml, где для параметра insert-after-ejb-postprocess установлено значение false.

...