避免使用Postgres和Wicket框架将重复的用户名插入到数据库中

时间:2014-05-30 07:36:02

标签: java postgresql jdbc wicket

由于我是这个框架的新手,我没有得到正确的例子,有人能告诉我如何避免重复的用户名插入数据库吗?我刚刚从数据库中选择了用户名并将其放入List中,现在我只想验证它是否重复插入,如果DB中已存在名称,则抛出一条消息。

ArrayList namelist = new ArrayList();
String name1 = "select P.name from Person P;
Query q1 = em.createQuery(name1);
namelist.addAll(q1.getResultList());

2 个答案:

答案 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]);
        }
    }

}