从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.但由于我对你们的技术堆栈了解不多,我不能给你更多的细节.

Java相关问答推荐

在AnyLogic中增加变量计数

S的字符串表示是双重精确的吗?

上下文初始化期间遇到异常-使用Java配置配置HibernateTemplate Bean时

如何打印本系列的第n项y=-(1)-(1+2)+(1+2+3)+(1+2+3+4)-(1+2+3+4+5)...Java中的(1+2+3+4...+n)

连接Quarkus中的两个异步操作

Spring Boot Maven包

由于我在Main方法中关闭了 scanner ,但在该方法中创建了一个新的 scanner ,因此出现了错误

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

使SLF4J在Android中登录到Logcat,在测试中登录到控制台(Gradle依赖问题)

Docker不支持弹性APM服务器

%This内置函数示例

如何在@CsvSource中传递空格作为值

FETCH类型设置为LAZY,但它仍会发送第二个请求

Java中HashSet的搜索时间与TreeSet的搜索时间

在ECLIPSE上的M1 Pro上运行JavaFX的问题

无限递归Java问题

如何用Micrometer&;斯普肯

带有提取器的JavaFXObservableList会根据侦听器的存在而改变行为

JavaFX 不嵌入谷歌 map html

JavaFX 在相对于 node 的固定位置显示工具提示