从Java迁移到Kotlin后,Constraint@NotNull不适用于Instant的字段实例.我的意思是,在Java中,由于这个限制,在updatdAt为空的情况下我得到了422,但在Kotlin中,我得到了400.你能给我一些线索吗,为什么会这样,我如何解决它?
data class User(
@NotNull
val updatedAt: Instant
)
从Java迁移到Kotlin后,Constraint@NotNull不适用于Instant的字段实例.我的意思是,在Java中,由于这个限制,在updatdAt为空的情况下我得到了422,但在Kotlin中,我得到了400.你能给我一些线索吗,为什么会这样,我如何解决它?
data class User(
@NotNull
val updatedAt: Instant
)
由于您的updatedAt
属性被定义为不可为空的Instant
类型,因此它不可能为空,因此@NotNull
约束也不可能失败.在失败之前,当某个机制try 将该属性设置为空时,可能会出现IllegalArgumentException
.
然后,这IllegalArgumentException
可能由某个异常处理程序转换成REST代码400,而通过判断约束的违反而抛出的任何异常都将被转换成REST代码422.
您应该try 使该属性可为空,以便允许该属性变为空,然后可以判断该属性是否违反@NotNull
约束:
data class User(
@NotNull
val updatedAt: Instant?
)
或者,您可以try 捕获在设置值updatedAt
时引发的异常并替换它.或者,您可以编写一个异常处理程序,返回REST代码422而不是400.但由于我对你们的技术堆栈了解不多,我不能给你更多的细节.