2011-08-27 2 views
1

다음 코드는 사용자 레코드를 만들고 저장하며 데이터베이스는 기본 메모리 (H2) 데이터베이스입니다.genericmodel validateAndSave 메서드를 호출하면 자동 생성 된 레코드 ID가 없습니다

사용자 인스턴스에서 validateAndSave (GenericModel) API를 호출 한 후 사용자는 자동 생성 된 ID를 갖게됩니다.

그러나 클라이언트 측에서 404가 발생합니다. 즉, get 메소드에서 notFoundIfNull에 실패한 코드입니다.

올바른 동작입니까?

public static void add(String body) { 
    User user = new Gson().fromJson(body, User.class); 

    if (User.findBy(user.email) != null) { 
     badRequest(); 
    } 

    user.validateAndSave(); 

    get(user.id); 
} 

public static void get(Long id) { 
    User user = User.findBy(id); 

    notFoundIfNull(user); 

    render(user); 
} 

답변

0

null을 ID로 get에 전달했는지 확인 했습니까? 메모리에있는 사용자가 새로 고침되지 않았을 가능성이 큽니다.

당신이 ID가이 작업을 수행하려고 재사용 할 수있는 경우 다음과 같은 지금 당신이 그것으로 작업을 수행하지 않는

user = user.save(); 

내가 유효성 검사를 추가하고 있지 않다. ValidateAndSave (code 참조)는 유효성 검사가 true이면 true를 반환하고 그렇지 않으면 false를 반환합니다. 당신은 그것을 무시하고 있으므로, 그 방법을 사용하지 마십시오.

여전히 유효성을 검사하려면 단계를 더 잘 구분하십시오. 먼저 유효성을 확인한 다음 저장하여 새 ID를 얻으십시오.

관련 문제