2013-04-09 4 views
0

В школьном проекте мы используем EJB Session Bean, Этот EJB предлагает простые услуги, такие как добавление, удаление, изменение, findAll, findbyId. Такие методы реализованы с использованием hibernate 4.0 (add -> saveOrUpdate, modify -> saveOrUpdate ...) и доступны для клиентаВзаимодействие сеанса сеанса бит/клиент сеанса EJB?

У меня есть два класса: Game (id, description, category) и Категория (id, title)). Категория также имеет набор игр. Идентификаторы создаются с использованием генератора тождеств. Используемая база данных - это mysql.

В клиенте Форма, используемая пользователем приложения для заполнения информации об игре (описание и категория) В контроллере я использую метод findById, чтобы получить категорию, которую пользователь выбрал, затем я создаю новую игра с этой категорией, и я сохраняю ее (используя SaveOrUpdate)

первая проблема, которую я замечаю: идентификатор генерируется правильно в EJB, и игра прошла, но обратно в клиенте игра не имеет идентификатора (Я думаю, что передача объектов между клиентом и EJB не по ссылке) Может ли кто-нибудь подтвердить это?

Вторая проблема: когда игра спасена, я попытался добавить эту игру в набор категорий и обновить эту категорию (используя также saveOrUpdate). Я получаю org.hibernate.NonUniqueObjectException исключение: другой объект с тем же значением идентификатора уже связанного с сессией , которую я не понимаю

Может кто-нибудь мне помочь?

+0

Можете ли вы разместить код? Я не могу вам помочь. – D180

ответ

0

Для первого вопроса, похоже, что идентификатор не отправляется обратно клиенту или не хранится с контроллером. Вы можете отправить его клиенту, добавив его в URL-адрес, т. Е. В обратном вызове клиента добавить «? Id =» + newGameId

С этим вы можете вернуть значение в контроллер с помощью сеттеры и геттеры для поля id;

long id; 
Смежные вопросы