我正在将 Play Framework 2 与 Ebean 一起使用。我有一堂课说人。Person 有 2 个接口,Passport 和 DriverLicence。Person 有 2 个变量,passportNum 和 driverLicenceNum。Passport 和 DriverLicence 有自己的 CRUD,由 DriverLicenceController 和 PassportController 控制。当我尝试从 DriverLicenceController 更新 driverLicenceNum 时,它会引发 ValidationException。我发现问题是由@Column(nullable = false) 引起的。我尝试从更新中打印出 passportNum 值,发现在 controller.update 中,passportNum 有一个值。但在 Person.update 中,它为空。请帮忙。以下是我的代码:
public class Person extends Model {
public interface Passport{}
public interface DriverLicence{}
@Id
public Long id;
@Required(groups = {Passport.class})
@Column(nullable = false)
public Long passportNum;
@Required(groups = {DriverLicence.class})
@Column(nullable = false)
public Long driverLicenceNum;
@Override
public void update(Object o) {
this.updatedOn = new DateTime();
Logger.debug("Passport: "+this.passportNum); // NULL
super.update(o);
}
}
public class DriverLicenceController extends Controller {
public static Result update(long personId) {
Person person = Person.find.byId(personId);
if(visit == null) {
flash("error", "does not exist.");
return DriverLicenceController.home();
}
Form<Person> personForm = form(Person.class, Person.DriverLicence.class).fill(person).bindFromRequest();
if(personForm.hasErrors()) {
flash("error", "DriverLicence has not been updated");
return badRequest();
}
Person personObj = personForm.get();
Logger.info("Password num: "+person.passPortNum); //display the number
personObj.update(personId);
return ok();
}
}