如何在 kotlin 中调试 myBatis NoSuchMethodException?
How to debug myBatis NoSuchMethodException in kotlin?
我有一个简单的 class 像这样:
data class Foo(
val id: Long,
val created: LocalDateTime,
val myBool: Boolean? = null,
val comment: SensitiveString? = null
)
我得到异常:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.XXX.XXX.XXX.XXX.Foo with invalid types (long,LocalDateTime,boolean,SensitiveString) or values (XX,2020-03-19T17:36:30.415,false,0@SensitiveString).
Cause: java.lang.NoSuchMethodException: com.XXX.XXX.XXX.XXX.Foo.<init>(long, java.time.LocalDateTime, boolean, com.XXX.XXX.XXX.XXX.SensitiveString)
这是我的 xml 结果图:
<resultMap id="fooMap" type="com.XXX.XXX.XXX.XXX.Foo">
<constructor>
<arg column="id" javaType="_long"/>
<arg column="created" javaType="java.time.LocalDateTime"
typeHandler="com.XXX.XXX.XXX.XXX.LocalDateTimeTypeHandler"/>
<arg column="myBool" javaType="_Boolean"/>
<arg column="comment" javaType="com.XXX.XXX.XXX.XXX.SensitiveString"
typeHandler="com.XXX.XXX.XXX.XXX.EncryptedStringTypeHandler"/>
</constructor>
</resultMap>
我该如何解决这个问题?问的构造函数应该是肯定有的,所以很迷惑。
此外:当我尝试用所有字段创建自己的构造函数时,kotlin 抱怨说构造函数与隐式构造函数冲突。
我该如何解决这个问题?
我确实遇到了这个问题。我的问题是 Boolean?
类型 - 当类型可为空时,Java 类型是 java.lang.Boolean
。我用注释做了它,所以它看起来像这样:
@ConstructorArgs (
...
Arg(column = "myBool", javaType = java.lang.Boolean::class)
...
)
我有一个简单的 class 像这样:
data class Foo(
val id: Long,
val created: LocalDateTime,
val myBool: Boolean? = null,
val comment: SensitiveString? = null
)
我得到异常:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.XXX.XXX.XXX.XXX.Foo with invalid types (long,LocalDateTime,boolean,SensitiveString) or values (XX,2020-03-19T17:36:30.415,false,0@SensitiveString).
Cause: java.lang.NoSuchMethodException: com.XXX.XXX.XXX.XXX.Foo.<init>(long, java.time.LocalDateTime, boolean, com.XXX.XXX.XXX.XXX.SensitiveString)
这是我的 xml 结果图:
<resultMap id="fooMap" type="com.XXX.XXX.XXX.XXX.Foo">
<constructor>
<arg column="id" javaType="_long"/>
<arg column="created" javaType="java.time.LocalDateTime"
typeHandler="com.XXX.XXX.XXX.XXX.LocalDateTimeTypeHandler"/>
<arg column="myBool" javaType="_Boolean"/>
<arg column="comment" javaType="com.XXX.XXX.XXX.XXX.SensitiveString"
typeHandler="com.XXX.XXX.XXX.XXX.EncryptedStringTypeHandler"/>
</constructor>
</resultMap>
我该如何解决这个问题?问的构造函数应该是肯定有的,所以很迷惑。 此外:当我尝试用所有字段创建自己的构造函数时,kotlin 抱怨说构造函数与隐式构造函数冲突。
我该如何解决这个问题?
我确实遇到了这个问题。我的问题是 Boolean?
类型 - 当类型可为空时,Java 类型是 java.lang.Boolean
。我用注释做了它,所以它看起来像这样:
@ConstructorArgs (
...
Arg(column = "myBool", javaType = java.lang.Boolean::class)
...
)