如何使我的模型类字段独一无二?例如。如果已经登录,我想为用户显示正确的消息。我必须编写自己的验证检查并使用它,或者 JPA@UniqueConstraint
可以用吗?
我是这样做的:
@Entity
public class User extends Model {
@Basic(optional=false) @Column(unique=true) public String name;
public User(String name) {
this.name = name;
create();
}
/** used in registration to find name clash */
public static User findByName(String name) {
return find("name", name).first();
}
}
然后在控制器中执行如下操作:
public static void register(@Required String name) {
if(User.findByName(name)!=null) {
Validation.addError("name", "this name is not available");
}
if (validation.hasErrors()) {
validation.keep();
params.flash();
flash.error("Please correct the form data.");
signup(); // whatever your GET action was
}
User user = new User(name);
login(); // whatever your success action is
}
您可以在没有 User.findByName() 检查的情况下执行此操作,并且您会得到 ConstrainViolationException 但这当然不是很用户友好。您也可以尝试/捕获该异常。我更喜欢这两种方式,即用户友好且在数据库中保持一致。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)