EJB会话Bean /客户端Hibernate会话交互?

时间:2013-04-09 17:14:14

标签: java hibernate java-ee servlets ejb

在我们使用EJB会话Bean的学校项目中, 这个EJB提供简单的服务,如添加,删除,修改,findAll,findbyId。这些方法是使用hibernate 4.0(add - > saveOrUpdate,modify - > saveOrUpdate ...)实现的,并且可供客户端使用

我有两个类:游戏(id,描述,类别)和类别(id,title)。 一个类别也有一组游戏。 使用标识生成器生成ID。使用的数据库是mysql。

在客户端 应用程序用户使用表单来填写有关游戏的信息(描述和类别)在控制器中我使用方法findById来获取用户选择的类别,然后我创建一个具有此类别的新游戏并保存(使用SaveOrUpdate)

我注意到的第一个问题:在EJB中正确生成id并且传递的游戏被修改但是在客户端中游戏没有id(我想在客户端和EJB之间传递对象不是通过参考)任何人都可以确认吗?

第二个问题:当游戏保存时,我尝试将此游戏添加到类别集并更新此类别(使用saveOrUpdate)。我得到异常org.hibernate.NonUniqueObjectException: 具有相同标识符值的不同对象已与会话关联 我不明白

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

对于第一个问题,听起来好像ID没有被发送回客户端,或者与控制器一起存储。 您可以通过将其添加到URL将其发送回客户端,即,在从客户端调用返回时添加“?id =”+ newGameId

使用此功能,您可以使用set字符和getter填充控制器中的值;

long id;