2013-10-22 62 views
2

我在hibernate配置xml中使用hibernate 3命名查詢。大於或小於hibernate命名的sql查詢

指定的查詢最初與用戶輸入日期匹配的日期,並且它工作正常。 但是,當我將等於('=')更改爲小於('< =')時,它給了我以下錯誤。

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> 

回答