在Spring数据JPA中外部化本机查询

在Spring数据JPA中外部化本机查询,jpa,spring-data-jpa,Jpa,Spring Data Jpa,我使用的是spring数据JpaRepository。 我有以下本机查询: @Query(value = "SELECT SUBSTRING_INDEX(u.email, '@', -1) as domain, COUNT(*) as domainCount, r.invite_organization_id" + " FROM srs_users as u,srs_user_registrations as r where u.user_id=r.user_id and r.

我使用的是spring数据JpaRepository。 我有以下本机查询:

@Query(value = "SELECT SUBSTRING_INDEX(u.email, '@', -1) as domain, COUNT(*) as domainCount, r.invite_organization_id"
        + "  FROM srs_users as u,srs_user_registrations as r where u.user_id=r.user_id and r.invite_organization_id=:orgId"
        + "  GROUP BY "
        + "SUBSTRING_INDEX(u.email, '@', -1) ORDER BY domainCount DESC", nativeQuery = true)
List<Object[]> countTopDomain(@Param("orgId") String orgId );
@Query(value=“选择子字符串索引(u.email,@,-1)作为域,COUNT(*)作为域计数,r.invite\u组织\u id”
+“从srs_用户作为u,srs_用户作为r注册,其中u.user_id=r.user_id和r.invite_组织_id=:orgId”
+“分组依据”
+“子字符串索引(u.email,'@',1)按域计数描述排序”,nativeQuery=true)
列出countTopDomain(@Param(“orgId”)字符串orgId);

我们可以像其他命名查询一样,在jpa-named-querys.properties中具体化上述本机查询吗

。但恐怕这不是你想要的。除此之外,不支持外部化SQL语句。

在参考资料中创建META-INF文件夹。 在META-INF中创建一个默认文件jpa-named-querys.properties

在此文件中,将您的查询放在任何唯一键处。说

chk.test1=选择子字符串索引(u.email,'@',-1)作为域,COUNT(*)作为域计数,r.invite_organization_id从srs_用户中作为u,srs_用户注册作为r,其中u.user_id=r.user_id和r.invite_organization_id=:orgId GROUP BY SUBSTRING_INDEX(u.email,'@',1)ORDER BY domain COUNT DESC

要使用此代码,请使用以下代码:

@查询(name=“chk.test1”,nativeQuery=true) 列出countTopDomain(@Param(“orgId”)字符串orgId)