不能使用MongoDB的spring验证

我在Kotlin寻找了在春季验证数据模型的解决方案。 但我不能。 以下是标签data class

 data class Tag(@field:NotNull var name: String) { lateinit @Id var id: ObjectId } 

我已经启用配置来使用bean验证

 @Configuration open class ValidatorConfig { @Bean open fun validator() = LocalValidatorFactoryBean() } 

据我所知,Spring Boot会自动加载所有的Bean配置。 在运行时,当用空的Json POST时,应该抛出适当的验证错误,但会抛出以下错误

 Instantiation of [simple type, class kagaz.sano.model.Tag] value failed for JSON property name due to missing (therefore NULL) value for creator parameter name which is a non-nullable type\n at [Source: org.apache.catalina.connector.CoyoteInputStream@66f3b65c; line: 3, column: 1] (through reference chain: kagaz.sano.model.Tag[\"name\"]) 

Spring通过检查objects的字段或属性值来验证objects 。 验证一个object你需要先创建它。 当json解串器试图解析输入并创建Tag实例时,遇到并报告问题:

JSON属性名称的[simple type, class kagaz.sano.model.Tag]值的实例化失败

为了使Spring Validation能够开始工作,需要一个对象的实例 – 即使它是无效的

这意味着你将需要允许json反序列化器创建一个处于无效状态的对象,以便可以通过验证器来检查它,如下所示:

 data class TagDto(@get:NotNull var name: String? = null) { @get:NotNull var id: ObjectId? = null }