How to solve "has an unsupported return type: class java.lang.String" when using Mybatis insert

247 Views Asked by At

in my project i need to use pk just i insert. so i used selectKey in my xml and it returns error : has an unsupported return type: class java.lang.String

i am using Spring, Java1.8, Oracle DB and my code goes

<insert id="makeNewOrder" parameterType="Order">
    <selectKey resultType="java.lang.String" keyProperty="orderCode" order="BEFORE">
        select to_char(sysdate, 'yyyymmdd') || order_seq.nextval || #{storeCode} from dual
    </selectKey>
        insert into
            orders 
            (orderCode
             , storeCode
             <if test="memberId != null"> , memberId </if>
             , orderState)
        values
            ( #{orderCode}
            , #{storeCode}
            <if test="memberId != null"> , #{memberId} </if>
            , 'apply')
</insert>

how can i fix it?

my dao returns String and i've googled...

1

There are 1 best solutions below

0
siiraaj On

Instead of using the fully qualified class name java.lang.String, try using the lowercase primitive string

<selectKey resultType="string" keyProperty="orderCode" order="BEFORE">
select to_char(sysdate, 'yyyymmdd') || order_seq.nextval || #{storeCode} from dual

Try also to explicitly cast the result to VARCHAR or CHAR in SQL:

<selectKey resultType="string" keyProperty="orderCode" order="BEFORE">
select cast(to_char(sysdate, 'yyyymmdd') || order_seq.nextval || #{storeCode} as VARCHAR2(255)) from dual