我正在使用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。