33

我必须更新我的数据库中的信息。

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;
}
4

4 回答 4

111

HV000030:找不到类型的验证器:java.lang.Integer

当您在 Hibernate Validator 的风格中使用 JSR303 bean 验证并且您在 JPA 实体中@NotEmpty具有如下Integer属性的 Hibernate 特定时,就会发生这种情况:

@NotEmpty
private Integer some;

这是完全错误的。整数不能被视为字符串、集合、映射或数组。请改用标准@NotNull

@NotNull
private Integer some;

请注意,具体问题与 JSF 完全无关。将来,请学习如何通过单独执行 JPA 代码来尽可能地排除噪音并确定具体问题。JSF 只是这里的 HTTP/MVC 信使,而 PrimeFaces 只是 HTML/CSS/jQuery/UI 代码生成器。

于 2013-06-13T11:56:16.780 回答
14

我想补充一下上面的答案。当你有这样的事情时,也会抛出这个异常:

@Size(min = 1, max = 20)
@Column(name = "ID")
private int id;
于 2016-03-13T20:55:10.080 回答
4

在以下情况下,您也可能会遇到此问题;

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

这是因为在验证时,'yourEnumType'(它是整数类型)的序数值在 Hibernate 在将值存储到数据库之前解析的字符串映射之前处理。

于 2017-05-16T14:35:46.320 回答
0

此外,如果存在任何对整数无效的约束,它会抛出该错误。就像注释一个整数:

  • @长度(最大值 = 3)
  • @尺寸
于 2018-10-10T20:10:41.623 回答