当前位置: 首页 > 知识库问答 >
问题:

在外部属性文件中存储带有结果设置映射的本机查询值

何兴学
2023-03-14

默认方法(在实体中):

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

它在JpaRepository中与方法< code >列表一起正常工作

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

但是!现在我不能设置结果映射,它在@ NamedNativeQuery(resultset mapping = " SomeName ")中。

我试图找到一个解决方案,但没有找到任何东西。我也检查了spring-jpa-data,也没有发现任何东西。可能是另一种方式存在?

共有1个答案

边健
2023-03-14

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

在orm.xml中,您可以对注释做任何事情。XML节点也具有相同的名称,但是使用了-而不是camel大小写:

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

 类似资料:
  • 我的域类中有一个map属性,我正在尝试在存储库中创建一个查询,或者使用默认的“findByBlah”语法从数据库中提取属性。目前不起作用。我可以很容易地用SQL编写查询,但我不知道JPQL需要什么。如何使用JPQL或接口“findBy”语法从数据库中提取这些数据?无论我当前使用哪种存储库方法,当它从数据库中提取“收集器”时,属性(映射或复杂对象列表)始终为空。 域对象: 存储库: 这是在H2控制台

  • 我试图实现的是在application.yml文件上指定一个目录,该目录直接位于类路径上(在/resources下)。我希望能有这样的东西: 使用这种方法,IDE将始终默认为application-dev.yml。当我通过gradle构建应用程序,并在传递命令行参数的同时运行它时,我可以指定配置文件,从而加载适当的文件。理想情况下,能够做到这一点: java-jar-dspring.profile

  • 我试图使用本机查询将多个表中的联接值检索到自定义POJO中。我要检索的值之一是JSONB字段。虽然我能够获得具有该字段的实体,但当我将其强制输入自定义POJO时,我得到了一个org.hibernate.MappingExcema: No Dialect映射for JDBC type: 1111异常。下面是我使用的: 使用POJO的: 使用MyJson类: 而且 还有我的定制POJO “@TypeD

  • 我有一个复杂的本机查询,我正在尝试将其结果映射到非实体DTO类。我正在尝试使用的with 我的DTO类 我的entity类,它具有我将调用此本机查询结果的存储库接口。 存储库 当我从ItemRepository调用getItemDetails()时,出现以下错误: org.springframework.data.mapping.属性引用异常:没有属性项找到项目类型的详细信息 使用和并解决此问题的

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?