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

时间:2011-08-27 19:19:44

标签: model save playframework

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

我希望在用户实例上调用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);
}

1 个答案:

答案 0 :(得分:0)

您是否检查过是否将null作为ID传递给get?很可能是你,因为你在内存中的用户将没有被刷新。

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

  user = user.save();

我没有添加验证,因为现在你没有做任何事情。如果验证正常,则ValidateAndSave(请参阅code)返回true,否则返回false。你忽略了它,所以没有必要使用那种方法。

如果您仍想验证,请更好地分离步骤:首先验证然后保存以获取新ID。