2012-03-13 35 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不一樣,不是數據庫中的數據。爲什麼無法獲得舊的實體值?

我該如何獲得數據庫值?

感謝您的幫助!

+0

我已經格式化了代碼。 – Sam 2012-03-13 05:11:32

回答

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(); 
相關問題