在另一个Hibernate命名查询中包含一个

时间:2018-09-28 05:07:22

标签: java sql xml hibernate named-query

在使用Hibernate的Java程序中,我有带有两个命名查询的XML文件:

<hibernate-mapping>
    <sql-query name="BIG_SQL_QUERY_WITH_LOT_OF_WHERE">
       <![CDATA[
         select * from Foo
         where ...
           and ...
           and ...
           ...
         order by ...
       ]]>
    </sql-query>

    <sql-query name="BIG_SQL_QUERY_WITH_LOT_OF_WHERE_WITH_ONE_MORE_CONDITION">
       <![CDATA[
         select * from Foo
         where ...
           and ...
           and ...
           ...
           and one_more_condition = ...
         order by ...
       ]]>
</hibernate-mapping>

第一个查询(“ BIG_SQL_QUERY_WITH_LOT_OF_WHERE”)内部有很多联接和条件。第二个查询(“ BIG_SQL_QUERY_WITH_LOT_OF_WHERE_WITH_ONE_MORE_CONDITION”)是相同的查询,但它还有一个where条件。

是否可以通过此查询的公共部分进行一个查询,并仅在第二个查询的这一部分(或仅包含一个以上的条件)中使用(或包括)?

1 个答案:

答案 0 :(得分:1)

纯XML解决方案: 您可以使用XML entity,这是一个缩写条目,您可以将其放置在XML文档中的任何位置:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE hibernate-mapping [
<!ENTITY includedStuff SYSTEM "common.xml">
]>
<hibernate-mapping>
    <sql-query name="BIG_SQL_QUERY_WITH_LOT_OF_WHERE">
       &includedStuff;
    </sql-query>
</hibernate-mapping>