我从Play开始!框架2和我在尝试将实体保存到数据库时遇到问题(Postgres)。
我已创建了一个模型,其中@Column(unique = true)
属性上有name
注释。因此,保存时必须有两个唯一属性:始终正确生成的ID和名称,即用户提供的输入。
当我检查Controller(filledForm.hasErrors()
)中的错误时,没有错误,因为(我猜)它不会检查重复的属性,而只是检查表单错误。
然后它转到模型并尝试保存对象thebean.save();
。然后它就崩溃了#34;并在浏览器中显示错误。
我的问题是:由于save()
方法返回void,如何捕获此错误并知道它是什么类型的错误(警告用户)?
由于
答案 0 :(得分:1)
替代解决方案是手动检查约束。 有一个名为validate()的实体方法(在模型中)。在表单验证时自动调用它。 所以:
public List<ValidationError> validate() {
List<ValidationError> errors = new ArrayList<>();
if(YouModel.find.where().eq("name", name).ne("entity_id", entity_id).findRowCount() != 0){
errors.add(new ValidationError("name", "error.yourModel.name.unique"));
return errors;
}
return null;
}
error.yourModel.name.unique
是来自/ conf / messages文件的自定义常量。你应该创建它。