如何使用MyBatis + Hibernate保存实体

时间:2013-07-17 13:54:53

标签: hibernate persistence mybatis

我正在使用2框架来获取和保存我的数据(MyBatis用于获取和Hibernate用于保存/更新/删除)。我想要的是用mybatis获取一些实体并将其分配给一个新实体并用hibernate保存它

示例:

我通过mybatis查询获得“角色”列表。 然后我试图创建一个具有该映射的新实体:

@ManyToOne(fetch = FetchType.LAZY, optional = false)
  @JoinColumn(name = "id_role")
  private Role role;

我正在使用列表中的一个角色来执行setRole。然后我从hibernate调用saveOrUpdate。我得到了这个例外:

对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例

我理解异常但有解决方案吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如何加载角色(通过MyBatis),Hibernate不知道角色已经在数据库中。因此,你看到的例外。解决它的唯一方法是将roleId存储在您的实体中而不是Role对象中。或者,您必须通过Hibernate以及使用它们的实体加载角色。