2012-03-13 10 views
0
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値を取得できますか?

ありがとうございました!

+0

私はコードをフォーマットしました。 – Sam

答えて

2

質問は本当に混乱しています。電話番号findbyId(u.id)old.roleが、uパラメータの値を返していて、データベースの値ではないことが返されていることを意味しますか?

その場合は、多分あなたはこのような何か試すことができます:あなたが実際に剥離したユーザーuを変更する必要がある場合は、あなたがこれを行う必要があります

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

を:

// 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(); 
関連する問題