Spring第二次调用CustomValidator时不会注入SessionFactory

时间:2013-09-24 11:31:41

标签: spring hibernate spring-mvc

我正在使用spring和hibernate开发一个应用程序。我已经创建了一个自定义验证器,用于检查数据库中的重复值,我需要在CustomValidator中注入hibernate 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();

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

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

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

0 个答案:

没有答案