我必须更新数据库中的信息。
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;
}
答案 0 :(得分:107)
HV000030:找不到类型的验证器:java.lang.Integer
当您在Hibernate Validator的使用中使用JSR303 bean验证时会发生这种情况,并且您在JPA实体中具有@NotEmpty
属性上的Hibernate特定Integer
,如下所示:
@NotEmpty
private Integer some;
这是完全错误的。整数不能视为string, collection, map or array。请改用标准@NotNull
。
@NotNull
private Integer some;
请注意,具体问题与JSF完全无关。将来,请通过以下方式了解如何尽可能多地排除噪音和naildown的具体问题。单独执行JPA代码。 JSF仅仅是HTTP / MVC信使,PrimeFaces只是HTML / CSS / jQuery / UI代码生成器。
答案 1 :(得分:14)
我想补充一下上面的答案。 当你有一些例如这样的东西时,也会抛出这个异常:
@Size(min = 1, max = 20)
@Column(name = "ID")
private int id;
答案 2 :(得分:3)
您也可能在以下情况下遇到此问题;
@Size(max = 45, message = "Field 'SomeEntityClass.yourEnumType' cannot exceed 45 characters") @Column(length=45)
@Enumerated(EnumType.STRING)
private SomeEnumType yourEnumType;
这是因为在验证时,'yourEnumType'(整数类型)的序数值在Hibernate在将值存储到数据库之前解析的字符串映射之前处理。
答案 3 :(得分:0)
如果存在对整数无效的任何约束,也会引发该错误。就像用以下命令注释整数: