具有大于或小于hibernate命名的sql查询

时间:2013-10-22 05:09:25

标签: sql xml hibernate

我在hibernate配置xml中使用带有命名查询的hibernate 3。

命名查询最初将日期与用户输入的日期匹配,并且工作正常。 但当我将equals('=')更改为小于('< =')时,它给了我以下错误。

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>

1 个答案:

答案 0 :(得分:1)

在xml中使用CDATA&lt;escape <