Метод Update () не работает в Play Framework с базой данных h2 - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь обновить список класса компании, который я создал в Play Framework. Все это работает, пока я не доберусь до company.update (), который не сохраняет в базу данных, как следует.

Вот мой класс компании:

package models;

import io.ebean.Finder;
import io.ebean.Model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Company extends Model {
    @Id
    public Integer id;
    public String code;
    public String name;
    public String adress;
    public String fiscalCode;
    public String bankAccount;

    public static Finder<Integer, Company> find = new Finder<>(Company.class);


    public String getFiscalCode() {
        return fiscalCode;
    }

    public void setFiscalCode(String fiscalCode) {
        this.fiscalCode = fiscalCode;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }
}

А вот Мои методы обновления и редактирования:

public Result editCompany(Integer id){

        Company company = Company.find.byId(id);
        if(company == null)
        {
            return notFound("Company not found");
        }
        Form<Company> companyForm = formFactory.form(Company.class).fill(company);
        return ok(editCompany.render(companyForm));
    }

    public Result updateCompany(){
        Form<Company> companyForm = formFactory.form(Company.class).bindFromRequest();
        if(companyForm.hasErrors())
        {
            flash("danger","Please Correct the Form Below");
            return badRequest(editCompany.render(companyForm));
        }
        Company newcompany = companyForm.get();
        Company company = Company.find.byId(newcompany.id);
        if (company == null) {
            flash("danger", "Book not found");
            redirect(routes.CompanyController.indexCompanies());
        }
        company.code = newcompany.code;
        company.name = newcompany.name;
        company.adress = newcompany.adress;
        company.fiscalCode = newcompany.fiscalCode;
        company.bankAccount = newcompany.bankAccount;
        company.update();
        flash("success","Company Details Updated Successfully");
        return redirect(routes.CompanyController.indexCompanies());
    }

У новой компании есть обновленные значения, но они не сохраняются в базе данных. Я проверил, напечатав на консоли название компании.

Надеюсь, вы мне поможете. Спасибо!

1 Ответ

1 голос
/ 31 января 2020

Кажется, я понял это. Проблема исчезает после использования методов получения и установки и выполнения перекомпиляции. Следовательно,

company.code = newcompany.code;
company.name = newcompany.name;
company.adress = newcompany.adress;
company.fiscalCode = newcompany.fiscalCode;
company.bankAccount = newcompany.bankAccount;

становится

company.setCode(newcompany.getCode());
company.setName(newcompany.getName());
company.setAdress(newcompany.getAdress());
company.setFiscalCode(newcompany.getFiscalCode());
company.setBankAccount(newcompany.getBankAccount());
...