0

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

我有两个类:游戏(id、描述、类别)和类别(id、标题)。一个类别也有一组游戏。id 是使用身份生成器生成的。使用的数据库是mysql。

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

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

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

谁能帮我 ?

4

1 回答 1

0

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

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

long id;
于 2013-04-09T18:31:23.847 回答