0

我正在使用spring和hibernate开发一个应用程序。我创建了一个自定义验证器,用于检查数据库中的重复值,因为我需要在 CustomValidator 中注入休眠 SessionFactory。它适用于单个字段,但是当我将其应用于两个或多个字段时,我得到一个 NullPointerException ,似乎 spring 在第二次调用验证器时没有注入 SessionFactory。

这是实体类的代码

  public class CenterRegistration implements Serializable {
@Column(unique=true)
@UniqueKey(message="Email Id already exist please choose another Email Id ", table =   "CenterRegistration", column = "email")
private String email;

@UniqueKey(message="UserName already exist please choose another username", table = "CenterRegistration", column = "userName")
@Column(unique = true)
private String userName;

这是customvalidator实现类的代码

  public class UserNameConstraintValidator implements
    ConstraintValidator<UniqueKey, String> {

@Inject
private SessionFactory sessionFactory;

    public boolean isValid(String value, ConstraintValidatorContext context) {
    System.out.println("in is valid value=" + value + " " + sessionFactory);
    if (sessionFactory == null) {
        return true;
    }
    Session session = sessionFactory.openSession();

当我在我的实体上的单个字段上应用这个验证器时它工作正常,但是在第二个弹簧应用时将 null 注入 sessionfactory。

if (sessionFactory == null) {
        return true;
    }

我使用这些只是为了避免 NullPointerException。

4

0 回答 0