Java 如何在orm.xml中的其他命名查询中重用命名公共HQL查询

Java 如何在orm.xml中的其他命名查询中重用命名公共HQL查询,java,hibernate,jpa,nhibernate-mapping,Java,Hibernate,Jpa,Nhibernate Mapping,我使用HQL命名查询(在XML文件中定义)来使用Hibernate查询我的数据库。有些查询相当复杂,我发现自己将一个查询的实质部分复制粘贴到另一个查询,类似的一个查询 我想知道是否有可能在“命名查询片段”中定义公共部分,并在所有查询中重用该片段 <named-native-query name="PeriodEntity.Retail.kpiQuery.NA.dly" result-class="com.abc.

我使用HQL命名查询(在XML文件中定义)来使用Hibernate查询我的数据库。有些查询相当复杂,我发现自己将一个查询的实质部分复制粘贴到另一个查询,类似的一个查询

我想知道是否有可能在“命名查询片段”中定义公共部分,并在所有查询中重用该片段

<named-native-query name="PeriodEntity.Retail.kpiQuery.NA.dly"
                        result-class="com.abc.data.store.insight.model.PeriodEntity">
        <query>
            SELECT
                LOCATION,
                MERCHANDISE,
                PERIOD,
                ATV,
                SALES,
                sales_ly,
                COMP,
                GM,
                GM_LY,
                AUR,
                AURLY,
                UNITSALES,
                UNITSALESLY,
                UNITS_COMP,
                UPT
            FROM
                dbo.V_DLY_API_PROC_RTL_MCLT_SLS_INV v
            WHERE
                LOC_BRD_ID = :brandId
                AND chnl_key = :channelId
            ORDER BY
                time_svc_lvl_opr_id ASC
      </query>
    </named-native-query>

<named-native-query name="PeriodEntity.Retail.kpiQuery.NA.dly"
                        result-class="com.abc.data.store.insight.model.PeriodEntity">
        <query>
            SELECT
                LOCATION,
                MERCHANDISE,
                PERIOD,
                ATV,
                SALES,
                sales_ly,
                COMP,
                GM,
                GM_LY,
                AUR,
                AURLY,
                UNITSALES,
                UNITSALESLY,
                UNITS_COMP,
                UPT
            FROM
                dbo.V_Week_API_PROC_RTL_MCLT_SLS_INV v
            WHERE
                LOC_BRD_ID = :brandId
                AND chnl_key = :channelId
            ORDER BY
                time_svc_lvl_opr_id ASC
      </query>
    </named-native-query>
.
.
.
.
.

挑选
位置,
商品,
时期
亚洲电视,
出售,
销售部,
公司,
转基因的
总经理,
AUR,
奥利,
单位销售额,
销售,
单位组合,
UPT
从…起
dbo.V_DLY_API_过程_RTL_MCLT_SLS_库存V
哪里
LOC_BRD_ID=:brandId
和chnl_键=:channelId
订购人
时间svc层操作id ASC
挑选
位置,
商品,
时期
亚洲电视,
出售,
销售部,
公司,
转基因的
总经理,
AUR,
奥利,
单位销售额,
销售,
单位组合,
UPT
从…起
dbo.V_周_API_过程_RTL_MCLT_SLS_库存V
哪里
LOC_BRD_ID=:brandId
和chnl_键=:channelId
订购人
时间svc层操作id ASC
.
.
.
.
.

由于这是XML,您可以将其用于此目的,但我怀疑这是否有助于可读性。我只能说,接受它。这不一定是重复。在我看来,这就像说字段的拼写是重复的。不是。

恐怕不是。如果您想要重用性,请查看CriteriaAPI或QueryDSL