| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > В контексте сохраняется не первичный ключ (EB 2.x) |
| Автор: Ulysses4j 15.7.2007, 03:49 | ||
Есть BMP Entity bean 2.x с двумя персистентными полями типа String: id, name. При ejbLoad()
вовращает значение name. А я, соответственно, хочу, чтобы было id. Как этого добиться? |
| Автор: ekr 15.7.2007, 11:07 |
| Поле name трактуется как PK. Чтобы PK стало поле id надо эти значения возвращать из метода ejbCreate(). |
| Автор: Ulysses4j 15.7.2007, 13:49 | ||
Так оно и есть. Но не помогает... Я не слишком силен в понимании жизненого цикла бинов, но, кажется, ни ejbCreate(), ни ejbFindByPrimaryKey(String id) (учитывая, что ошибка происходит при обращении к одному из finders) не вызывается - я ставил вывод в консоль сообщений: вроде бы вызывается setEntityContext(EntityContext ctx) и ejbLoad(), и вот в ejbLoad() такая ерунда. На всякий случай код ejbCreate(String name):
У меня id - auto_generated. |
| Автор: ekr 15.7.2007, 14:43 |
| Тогда надо убедиться, что методы ejbFindXXX() в классе реализации содержат правильный sql-запрос и возвращают значение именно поля id. FYI: метод ejbCreateXXX(...) вызывается контейнером у объекта реализации (т.н. bean instance), когда клиент вызывает у фабрики (EJBHome) метод createXXX(...) Добавлено через 1 минуту и 59 секунд это случается при вызове какого именно finder-метода? нужно проверить правильность соответствующего ejbFindXXX() метода. |
| Автор: Ulysses4j 15.7.2007, 14:58 |
| Действительно, этот findXXX() (вернее, ejbFindXXX) возвращал name, а не id. Теперь зарботало. Извините, за глупый вопрос и спасибо, огромное! ekr, а можно такой вопрос по дизайну: если в сервлете несколько раз используется один и тот же бин (EB; например несколько раз findXXX вызывается, но в разных методах-обработчиках запросов, получаемых этим сервлетом), то насколько хорошо сделать сервлету поле типа домашнего интерфейса, инициализировать его в init() и дальше пользоваться им? Или все-таки лучше каждый раз заново его искать? |
| Автор: Ulysses4j 15.7.2007, 15:22 |
| Спасибо-спасибо, так и сделаю! И про паттерны J2EE у вас читать буду! |