在使用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条件。
是否可以通过此查询的公共部分进行一个查询,并仅在第二个查询的这一部分(或仅包含一个以上的条件)中使用(或包括)?
答案 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>