2

hibernate 構成 xml で名前付きクエリを使用して hibernate 3 を使用しています。

名前付きクエリは、最初は日付とユーザーが入力した日付を一致させ、正常に機能しました。しかし、等号 ('=') をより小さい ('<=') に変更すると、次のエラーが発生しました。

Caused by: org.hibernate.MappingException: Could not parse mapping document in input stream
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:431)
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
    ... 106 more
Caused by: org.dom4j.DocumentException: Error on line 57 of document  : The content of elements must consist of well-formed character data or markup. Nested exception: The content of elements must consist of well-formed character data or markup.
    at org.dom4j.io.SAXReader.read(SAXReader.java:482)
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:422)
    ... 107 more

これは、XML パーサーがタグのコンテンツ内で「<」または「>」を許可しないためです。ただし、<= または >= 比較を行うには、'<' または '>' が必要です。パーサーが満足するように、より大きいか小さいかを表す別の方法はありますか。

注意: 名前付きクエリを注釈としてコードに入れることができることは既に知っていますが、システムの一貫性のためにこの方法を好みます。

名前付きクエリのサンプル:

<sql-query name="persons">
    <return alias="person" class="eg.Person"/>
    SELECT person.NAME AS {person.name},
           person.AGE AS {person.age},
           person.SEX AS {person.sex}
    FROM PERSON person
    WHERE person.NAME LIKE :namePattern
    AND trim(person.JOINDATE) <= to_date(:joinDate, 'dd-mm-yyyy')
</sql-query>
4

1 に答える 1

1

CDATAを使用するか、xml&lt;エスケープします。 <

于 2013-10-22T05:12:45.770 に答える