Включить один Hibernate Named Query в другой - PullRequest
0 голосов
/ 28 сентября 2018

В моей Java-программе с Hibernate у меня есть 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 голосов
/ 29 сентября 2018

Чистое решение 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>
...