Java Hibernate Не удалось найти валидатор для логического - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть сервисный метод, который пытается добавить объект с помощью store() метода hibernate.Метод get работает для этого DAO и класса обслуживания, тогда как добавление не работает.В консоли нет ошибок.

UrlWhiteListDaoImpl urlDao;

MapperFacade mapper;

@Autowired
public UrlWhiteListingServiceImpl(UrlWhiteListDao urlWhiteListDao, MapperFacade mapper, UrlWhiteListDaoImpl urlDao) {
    this.urlDao = urlDao;
    this.urlWhiteListDao = urlWhiteListDao;
    this.mapper = mapper;
}

@Override
public UrlWhiteListDto addUrlWhiteListItem(UrlWhiteListDto urlWhiteListDto) throws Exception {
    String domainUrlToBeAdded = parseUrl(urlWhiteListDto.getDomain());
    if (isDomainExistbyName(domainUrlToBeAdded)) {
        throw new Exception("Already existed domain is tried to be added");
    }
    UrlWhitelist urlModel = mapper.map(urlWhiteListDto,UrlWhitelist.class);
    urlDao.store(urlModel);
    return urlWhiteListDto;

}

Мой класс модели:

@Entity
@Table(name = UrlWhitelist.TABLE_NAME)
public class UrlWhitelist implements EntityBean { 

    public static final String TABLE_NAME = "URL_WHITE_LIST";

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", nullable = false)
    private Long id;

    @NotBlank
    @Column(name = "DOMAIN", nullable = false)
    private String domain;

    @NotBlank
    @Column(name = "DISABLE", nullable = false)
    private boolean disabled;

    // getters & setters omitted
}

И класс реализации DAO:

public class UrlWhiteListDaoImpl extends EntityDaoImpl<UrlWhitelist, Long> implements UrlWhiteListDao {

    protected UrlWhiteListDaoImpl() {
        super(UrlWhitelist.class);
    }

    @Override
    public List<UrlWhitelist> getByDomainName(String name) {
        DetachedCriteria criteria = DetachedCriteria.forClass(UrlWhitelist.class);
        criteria.add(Restrictions.eq("domain", name));
        return getAllByCriteria(criteria);
    }
}

В консоли нет ошибки, но в журнале сервера написано:

SEVERE: Servlet.service () для сервлета [services] в контексте с исключением пути path [] [Ошибка обработки запроса;Вложенное исключение: javax.validation.UnexpectedTypeException: HV000030: Не удалось найти валидатор для ограничения 'org.hibernate.validator.constraints.NotBlank', проверяющего тип 'java.lang.Boolean'.Проверьте конфигурацию для «отключен»] с первопричиной javax.validation.UnexpectedTypeException: HV000030: Не удалось найти валидатор для ограничения «org.hibernate.validator.constraints.NotBlank», проверяющего тип «java.lang.Boolean».Проверьте конфигурацию для 'disabled'

Я подумал, что что-то не так с отображением между классом и классом модели, но тогда почему метод get работает, и только store() не работает?Какое решение?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

для устранения этой ошибки вы ДОЛЖНЫ использовать правильные аннотации.В указанной выше проблеме аннотацию @NotBlank необходимо применять только к любому полю String.

Чтобы проверить поле логического типа, используйте аннотацию @NotNull или используйте логический тип в штучной упаковке

0 голосов
/ 13 декабря 2018

Вы должны использовать аннотацию @NotNull.

Ваш boolean является примитивным типом, а не типом объекта (Boolean), следовательно, ограничение @NotNull не может быть применено, поскольку тип примитива не может быть null.Аннотация выполняет следующую проверку (добавленное мной форматирование):

Элемент с комментариями не должен быть null.Принимает любой тип.

Используйте тип объекта:

@NotNull
@Column(name = "DISABLE", nullable = false)
private Boolean disabled;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...