簡體   English   中英

具有大於或小於休眠的命名SQL查詢中的值

[英]Having greater than or less than in hibernate named sql query

我在休眠配置xml中使用帶有命名查詢的休眠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>

使用CDATA&lt; 轉義 <在xml中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM