0

XMLの1つに次の非常に基本的なマッピングがあります。

<select id="getUserAuthorities" parameterType="string" resultMap="resultGetUserAuthorities">
    SELECT AUTHORITY FROM BASIC_AUTHORITIES
    WHERE UPPER(USERNAME) = UPPER(#{username})
        AND (EXPIREDTADSTP IS NULL OR TRUNC(EXPIREDTADSTP) < SYSDATE)
</select>

上記のマッピングでは、マッパーの作成中にアプリケーションサーバーがコンテナーの起動(Spring)で失敗し、次のエラーが発生します。

initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionです:org.apache.ibatis.builder.BuilderException:ドキュメントインスタンスの作成中にエラーが発生しました。原因:org.xml.sax.SAXParseException:要素のコンテンツは、整形式の文字データまたはマークアップで構成されている必要があります。

削除したかのように、sysdateで失敗するようです

またはTRUNC(EXPIREDTADSTP)<SYSDATE

その後、それはうまく機能します。

MyBatisはOracleSYSDATEフィールドをサポートしていませんか?

4

2 に答える 2

1

問題は、XML内にエスケープされていないより少ない記号があることです。

于 2012-12-23T03:30:40.273 に答える
0

「<」という単語を「>」に変更する必要があります。TRUNC(EXPIREDTADSTP) < SYSDATE文をに 変更できますSYSDATE>TRUNC(EXPIREDTADSTP)。ブラケットを終了しなかったためにエラーメッセージが表示された可能性があります。

于 2015-08-11T06:42:18.630 に答える