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

问题描述:

在一个学校项目中,我们使用的是EJB Session Bean, 这个EJB提供了简单的服务,比如add,delete,modify,findAll,findbyId。这样的方法是使用休眠4.0(添加 - > saveOrUpdate,修改 - > saveOrUpdate ...),并可用于客户端EJB会话Bean /客户端Hibernate会话交互?

我有两个类:游戏(id,description,category)和类别(id,title )。 一个类别也有一套游戏。 使用身份生成器生成ID。数据库使用的是mysql。

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

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

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

任何人都可以帮助我吗?

+0

你能发表一些代码吗?没有它,我无法真正帮助你。 – D180 2013-04-09 17:33:49

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

有了这个,您可以将值填充回控制器id字段的setter和getters;

long id;