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

标签 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 条件。

有没有办法用该查询的公共(public)部分进行一个查询,并在其中使用(或包含)第二个查询的这一部分(只有这一个条件)?

最佳答案

纯 XML 解决方案: 您可以使用 XML 实体,这是一个可以放置在 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>

关于java - 将一个 Hibernate 命名查询包含在另一个 Hibernate 命名查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548651/

相关文章:

java - 为什么这个程序的输出是-4? (Java - 数据类型字节)

java - 使用匹配器和正则表达式提取子字符串

javascript - SQL 事务和 JavaScript Promises 有什么关系?

sql - 获取 SQL 查询中每个不同记录的最大平均值

mysql - 获取数据库中varchar列的最大值

xml - 用于跨多个子节点检查属性值的 XPath 表达式

Java switch case 失败

java - 将自定义数据源添加到 Jaspersoft Studio

java - 将ScrollView插入布局

xml - 制作 xml 以在 golang 后的 http 中发送