Подтвердить что ты не робот

Javax.servlet.ServletException: HV000030: для типа: валидатор не найден: java.lang.Integer

Мне нужно обновить информацию в моей базе данных.

FacadePatient.java код класса:

public Patient update(Patient p) {

    Patient pat = em.find(Patient.class, p.getPatientId());
    p.setPatientPhone(pat.getPatientPhone());
    p.setPatientDateNaiss(pat.getPatientDateNaiss());
    p.setPatientEmail(pat.getPatientEmail());
    p.setPatientJob(pat.getPatientJob());
    p.setPatientSmoking(pat.getPatientSmoking());
    p.setPatientSize(pat.getPatientSize());
    em.merge(pat);
    return p;
}
4b9b3361

Ответ 1

HV000030: для типа: валидатор не найден: java.lang.Integer

Это произойдет, если вы используете JSR303 bean валидацию в аромате Hibernate Validator, и у вас есть в вашей сущности JPA специфичный для Hibernate @NotEmpty свойство Integer, подобное этому:

@NotEmpty
private Integer some;

Это совершенно неправильно. Целое число не может считаться строкой, коллекцией, картой или массивом. Вместо этого используйте стандартный @NotNull.

@NotNull
private Integer some;

Обратите внимание, что конкретная проблема полностью не связана с JSF. В будущем, пожалуйста, узнайте, как исключить как можно больше шума и устранить конкретную проблему, например. выполнение кода JPA индивидуально. JSF - это просто HTTP/MVC-мессенджер, а PrimeFaces - всего лишь генератор кода HTML/CSS/jQuery/UI.

Ответ 2

Я хотел бы добавить к вышеуказанному ответу. Это исключение также будет выбрано, если у вас есть что-то вроде этого:

@Size(min = 1, max = 20)
@Column(name = "ID")
private int id;

Ответ 3

Вы можете получить эту проблему также в таких случаях, как показано ниже:

@Size(max = 45, message = "Field 'SomeEntityClass.yourEnumType' cannot exceed 45 characters") @Column(length=45)
@Enumerated(EnumType.STRING)
private SomeEnumType yourEnumType;

Это связано с тем, что во время проверки порядковое значение 'yourEnumType' (которое имеет целочисленный тип) обрабатывается перед преобразованием String, которое Hibernate разрешает, прежде чем хранить значение в базе данных.