【问题标题】:calling genericmodel validateAndSave method won't have the record id autogenerated调用 genericmodel validateAndSave 方法不会自动生成记录 ID
【发布时间】:2011-08-27 19:19:43
【问题描述】:

我有以下代码创建/保存用户记录,数据库是默认(内存中的 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);
}

【问题讨论】:

    标签: model save playframework


    【解决方案1】:

    您是否检查过您是否将 null 作为 id 传递给 get?您很可能是,因为您在内存中的用户尚未刷新。

    如果您必须重复使用 id,请尝试这样做:

      user = user.save();
    

    我没有添加验证,因为现在你没有对它做任何事情。 ValidateAndSave(请参阅code)如果验证成功则返回 true,否则返回 false。您忽略了它,所以使用该方法没有意义。

    如果还想验证,最好把步骤分开:先验证,再保存获取新的id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      相关资源
      最近更新 更多