Обновление EBeans не сохраняет измененные элементы поля - PullRequest
0 голосов
/ 18 апреля 2020

Я обновляюсь с Play 2.5 до 2.7, и у меня проблема с сохранением форм. Когда поля изменяются, и я вызываю Model.update (), изменения не сохраняются в базе данных (даже если они показывают измененные при отладке до того, как будет выполнено обновление)

Если, однако, я их специально установил, тогда они сохраняется Поэтому он должен что-то делать с тем фактом, что он не обнаруживает изменения и не видит объект как измененный. Я использую методы получения и установки в модели, и все свойства являются частными.

Это функция контроллера (с двумя строками для сохранения этих двух полей)

@Check(UserTask.MANAGER)
public Result updateSceneSet(Http.Request request) {
    Messages messages = messagesApi.preferred(request);
    Form<StreamingSceneSet> form = formFactory.form(StreamingSceneSet.class).bindFromRequest(request);
    if (form.hasErrors()) {
        if (form.rawData().get("id") != null && form.rawData().get("id").length() > 0) {
            long itemId = Long.parseLong(form.rawData().get("id"));
            StreamingSceneSet item = StreamingSceneSet.findById(itemId);
            return badRequest(views.html.streaming.editSceneSetView.render(form, item, messages, request));
        } else {
            return badRequest(views.html.streaming.createSceneSetView.render(form,messages, request));
        }
    }

    // Form is OK, has no errors we can proceed
    StreamingSceneSet item = form.get();

    item.setName(item.getName());
    item.setDescription(item.getDescription());

    // Insert or update?
    if (item.getId() == null) {
        item.insert();
        flash("success", messages().at("addedSceneSet", item.getName()));
    } else {
        item.update();
        flash("success", messages().at("updatedSceneSet", item.getName()));
    }
    return redirect(routes.Streaming.sceneSets());
}

1 Ответ

0 голосов
/ 18 апреля 2020

Кажется, потому что, когда я начал обновление, у меня было несколько устаревших классов, у меня не было геттеров и сеттеров, и, поскольку у меня были некоторые проблемы, я вставил:

play.forms.binding.directFieldAccess = true

Удаление этого заставило все работать снова .

...