вызов метода genericmodel validateAndSave не будет автоматически генерировать идентификатор записи - PullRequest
1 голос
/ 27 августа 2011

У меня есть следующий код, который создает / сохраняет запись пользователя, база данных является базой данных по умолчанию (H2 в памяти).

Я ожидаю, что после вызова API validateAndSave (из GenericModel) для пользовательского экземпляра у пользователя будет автоматически создан идентификатор.

Но я получаю 404 на стороне клиента, т. Е. Код не выполнен на notFoundIfNull в методе 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);
}

1 Ответ

0 голосов
/ 30 августа 2011

Вы проверили, передаете ли вы ноль в качестве идентификатора get?Скорее всего, так как пользователь, который у вас в памяти, не будет обновлен.

Если вам нужно повторно использовать идентификатор, попробуйте сделать следующее:

  user = user.save();

Я не добавляюпроверка, так как сейчас вы ничего не делаете с этим.ValidateAndSave (см. code ) возвращает значение true, если проверка прошла успешно, в противном случае - значение false.Вы игнорируете его, поэтому нет смысла использовать этот метод.

Если вы все еще хотите проверить, лучше разделите шаги: сначала проверьте, а затем сохраните, чтобы получить новый идентификатор.

...