如果传入请求的字段少于或多于 POJO,我如何告诉 Hibernate Validator 抛出异常
How can I tell Hibernate Validator to throw exception if the incoming request has less or extra fields than the POJO
例如我的 POJO 有两个字段
public class User {
@NotNull
private String firstName;
@NotNull
private String lastName;
}
如果传入的请求正文如下所示,hibernate 不会抛出任何错误,因为所有必需的字段都在那里。
{
"firstName": "cat",
"lastName": "dog",
"extraField": "whatever"
}
有什么方法可以让hibernate检查这种情况吗?我知道我可以 @JsonCreator
来解决这个问题。但是将 hibernate 和 Jackson 结合在一起是不是一个好方法?
如果您使用的是自动配置,那么 application.properties 中的以下 属性 就可以了。
spring.jackson.deserialization.fail-on-unknown-properties=true
这相当于下面的
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
我在没有 spring 的情况下做了一个小测试,它抛出了一个异常 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
例如我的 POJO 有两个字段
public class User {
@NotNull
private String firstName;
@NotNull
private String lastName;
}
如果传入的请求正文如下所示,hibernate 不会抛出任何错误,因为所有必需的字段都在那里。
{
"firstName": "cat",
"lastName": "dog",
"extraField": "whatever"
}
有什么方法可以让hibernate检查这种情况吗?我知道我可以 @JsonCreator
来解决这个问题。但是将 hibernate 和 Jackson 结合在一起是不是一个好方法?
如果您使用的是自动配置,那么 application.properties 中的以下 属性 就可以了。
spring.jackson.deserialization.fail-on-unknown-properties=true
这相当于下面的
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
我在没有 spring 的情况下做了一个小测试,它抛出了一个异常 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException