如何使我的模型类字段独一无二?例如。如果已经登录,我想为用户显示正确的消息。我必须自己编写验证检查并使用它,或者可以使用 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();
}
}
然后在 Controller 中执行如下操作:
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 但这当然不是很用户友好。您也可以尝试/捕获该异常。我更喜欢这两种方式,即用户友好且在数据库中保持一致。
关于java - 玩! - 独特的模型领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179598/