调用genericmodel validateAndSave方法不会自动生成记录id

调用genericmodel validateAndSave方法不会自动生成记录id,model,save,playframework,Model,Save,Playframework,我有以下创建/保存用户记录的代码,数据库是默认的H2内存数据库 我希望在用户实例上调用GenericModelAPI的validateAndSave后,用户将自动生成一个id 但我在客户端得到了一个404,即get方法中的notFoundIfNull代码失败 这是正确的行为吗 public static void add(String body) { User user = new Gson().fromJson(body, User.class); if (User.find

我有以下创建/保存用户记录的代码,数据库是默认的H2内存数据库

我希望在用户实例上调用GenericModelAPI的validateAndSave后,用户将自动生成一个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);
}

您是否已检查是否将null作为id传递以获取?很可能是这样,因为内存中的用户尚未刷新

如果必须重复使用id,请尝试执行以下操作:

  user = user.save();
我没有添加验证,因为现在您没有对其进行任何操作。ValidateAndSave see如果验证正常,则返回true,否则返回false。您正在忽略它,因此使用该方法没有意义

如果仍要验证,最好将以下步骤分开:首先验证,然后保存以获取新id