如何在 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)
        ...
    )