【问题标题】:EJB Session Bean / Client Hibernate Session interaction?EJB Session Bean / Client Hibernate Session 交互?
【发布时间】:2013-04-09 17:14:13
【问题描述】:

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

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

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

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

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

谁能帮帮我?

【问题讨论】:

  • 你能发布一些代码吗?没有它我真的帮不了你。

标签: java hibernate jakarta-ee servlets ejb


【解决方案1】:

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

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

long id;

【讨论】:

    猜你喜欢
    • 2011-05-19
    • 2014-01-04
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2015-08-03
    • 2012-08-11
    相关资源
    最近更新 更多