将带有resultSetMapping的本机查询的值存储在外部属性文件中

时间:2018-09-28 12:59:38

标签: spring spring-data-jpa

默认方法(在实体中):

@Entity
@Table(...)
@SqlResultSetMapping(name = "SomeName", classes = @ConstructorResult(targetClass = SomeClass.class, columns = {...}))
@NamedNativeQuery(name = "CurrEntity.getSomeSelect"), query = "...", resultSetMapping = "SomeName")
public class CurrEntity ...

它在JpaRepository中使用方法List<SomeClass> getSomeSelect()

可以正常工作

查询非常大,我想将其移动到属性文件。这是非常简单的任务-只需创建默认的classpath:/META-INF/jpa-named-queries.properties或使用@EnableJpaRepositories(namedQueriesLocation = "classpath:new-name.properties")自定义新路径,然后我就可以从实体类中删除@NamedNativeQuery并在JpaRepository中使用方法。

但是!现在,我无法设置结果映射,该映射位于@NamedNativeQuery中(resultSetMapping =“ SomeName”)。

我试图找到一种解决方案,但没有找到任何东西。我也检查了spring-jpa-data,也没有发现任何东西。可能还有其他方式吗?

1 个答案:

答案 0 :(得分:1)

您可以将查询放入名为orm.xml的文件中。此文件必须位于您的类路径的META-INF目录中:

在orm.xml中,您可以使用批注进行所有操作。 XML节点也具有相同的名称,但是带有-而不是驼峰大小写:

在此处了解更多信息:https://gerardnico.com/jpa/orm.xml