Update() 方法在带有 h2 数据库的 Play Framework 中不起作用
Posted
技术标签:
【中文标题】Update() 方法在带有 h2 数据库的 Play Framework 中不起作用【英文标题】:Update() method doesn't work in Play Framework with h2 database 【发布时间】:2020-01-28 18:40:11 【问题描述】:我正在尝试更新我在 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());
新的公司实体有更新的值,但它们没有保存在数据库中。我通过打印到控制台 company.name 进行了检查。
我希望你能帮助我。谢谢!
【问题讨论】:
你的ebean正常工作吗?你已经打开了 ebean 包和 jdbclog 的日志记录? 【参考方案1】:我好像明白了。 使用 getter 和 setter 并重新编译后,问题就消失了。因此,
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());
【讨论】:
以上是关于Update() 方法在带有 h2 数据库的 Play Framework 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
H2:打开连接,更新,关闭连接,现在我所有的更改都消失了吗?