2011-08-27 51 views
1

我有下面的代碼創建/保存用戶記錄,數據庫是默認的(內存中的H2)數據庫。調用genericmodel validateAndSave方法不會有自動生成的記錄ID

我期望在用戶實例調用validateAndSave(的GenericModel)API之後,用戶將擁有一個自動生成的id。

但我在客戶端得到404,即代碼在getFoundIfNull get方法失敗。

這是正確的行爲嗎?

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

你是否檢查過你是否將空作爲ID傳遞給get?最有可能的是,因爲你在記憶中的用戶將不會被刷新。

如果你有重用ID嘗試這樣做:

user = user.save(); 

我不添加驗證,因爲現在你沒有做任何事的。 ValidateAndSave(見code)如果驗證正確則返回true,否則返回false。你忽略它,所以使用該方法沒有意義。

如果你還想驗證,更好地分離的步驟:首先驗證,然後保存獲得新的ID。