代码之家  ›  专栏  ›  技术社区  ›  Dmitry Ionash

在外部属性文件中使用ResultsMapping存储本机查询的值

  •  0
  • Dmitry Ionash  · 技术社区  · 7 年前

    默认方法(实体中):

    @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") 然后我可以从实体类中删除@namedNativeRequesty,并在JpaRepository中使用方法。

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

    我试图找到解决办法,但什么也没找到。我也检查了springjpa的数据,也没有发现任何东西。可能是另一种方式存在?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Simon Martinelli    7 年前

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

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

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