由于我是这个框架的新手,我没有得到正确的例子,有人能告诉我如何避免重复的用户名插入数据库吗?我刚刚从数据库中选择了用户名并将其放入List中,现在我只想验证它是否重复插入,如果DB中已存在名称,则抛出一条消息。
ArrayList namelist = new ArrayList();
String name1 = "select P.name from Person P;
Query q1 = em.createQuery(name1);
namelist.addAll(q1.getResultList());
答案 0 :(得分:2)
只需在用户名列上添加一个唯一索引,并优雅地处理“是一个重复的”异常。
答案 1 :(得分:0)
我会使用AbstractFormValidator
并避免异常处理,因为对我来说这不是一种特殊情况,但我所知道的事情可能会发生。
下面是一些示例代码。在验证方法中,我查看数据库中是否已有用户具有所请求的用户名,如果是,则输出错误。
public class UsernameValidator extends AbstractFormValidator {
private FormComponent[] componentsToValidate;
private SomeUserService someUserService;
public UsernameValidator(FormComponent userNameField) {
componentsToValidate = new FormComponent[]{userNameField};
}
@Override
public FormComponent<?>[] getDependentFormComponents() {
return componentsToValidate;
}
@Override
public void validate(Form<?> form) {
final String userNameToCheck = componentsToValidate[0].getInput();
if (someUserService.getUserByLogin(userNameToCheck) != null) {
error(componentsToValidate[0]);
}
}
}