为什么不能获得旧的实体价值?

时间:2012-03-13 03:54:47

标签: hibernate playframework

Model: User
     id
     username
     role

Controller:update(User u)
  User old = User.findById(u.id);
  if  u.role NOT equals old.role
       .......

问题是:User.findById(u.id);,此代码返回的用户与PARAM u不同,不是数据库中的数据。

如何获取DATABASE值?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

问题实在令人困惑。您的意思是当您拨打电话findbyId(u.id)old.role正在返回u参数中找到的值而不是数据库中找到的值?

如果是这种情况,也许你可以尝试这样的事情:

JPA.em().detach(u);
User old = User.findById(u.id);
if (!u.role.equals(old.role)) {
    ...
}

如果您确实需要对已分离的用户u进行更改,则需要执行以下操作:

// this will attach the user back to the hibernate session
User merged = JPA.em().merge(u);
// do something like updating the merged user
merged.property = someValue;
merged.save();