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