2012-03-13 4 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

답변

2

질문은 정말 혼란 스럽습니다. old.role이 데이터베이스에있는 값이 아닌 u 매개 변수에있는 값을 반환한다고 findbyId(u.id) 전화를 걸었습니까?

그런 경우가 있다면, 아마도 당신은 다음과 같이 시도 할 수 있습니다 : 당신이 실제로 분리 된 사용자 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(); 
관련 문제