用于存储库中本机查询的Spring Data JPA默认架构

vis*_*ule 3 hibernate spring-data-jpa spring-boot

我在Spring Boot Application中使用Spring-dat-jpa,并尝试在存储库中执行本机查询。当我在表名称后附加模式名称时,它可以正常工作,但它不能独立运行,并且不会像我定义的实体类那样从application.properties文件中选择模式名称

我正在使用下面的属性来设置默认架构,它对于实体类和命名查询工作正常。但是,当我在@query中编写任何本机查询时,它开始抱怨架构名称:

spring.jpa.properties.hibernate.default_schema=NPS_WO
Run Code Online (Sandbox Code Playgroud)

以下是我的查询:

@Repository
public interface TestRepository extends JpaRepository<TypeRef,Long> {


    @Query(value="SELECT t.* from Type_Ref t")
    public List<Object[]> findAllTypes();

}
Run Code Online (Sandbox Code Playgroud)

在我的实际情况中,此查询将由复杂的本机查询代替。

任何帮助将不胜感激。

小智 6

您可以使用来访问本机查询中的默认架构名称{h-schema}

因此,您的查询应如下所示:

@Query(value="SELECT t.* from {h-schema}Type_Ref t")
public List<Object[]> findAllTypes();
Run Code Online (Sandbox Code Playgroud)

h模式与表名之间没有点,这是自动添加的。

  • 这对于单一方案很有用。多模式会出现什么情况? (2认同)