Почему нельзя получить значение старой сущности? - PullRequest
0 голосов
/ 13 марта 2012
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, НЕ данных в базе данных.

Как я могу получить значение Базы данных?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 13 марта 2012

Вопрос действительно запутанный.Вы имеете в виду, что когда вы делаете вызов 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...