如何在 spring 启动时连接到数据库中的方案而不是 public

How to do in spring boot that connects to a scheme in a database and not to the public

我有一个 Spring Boot api 连接到 postgresql 中的数据库,在数据库中我有两个方案,一个是我自己的,一个是 public。 当插入我的方案中的 table 时,会在 public 中创建并插入那里。 我试图将我的方案名称放入实体中,但它给我一个错误并说它不存在,我不知道是否有必要这样做:

@Entity
@Table(  name = "rules" , schema = "eschema1")

这是我的 application.properties:

spring.datasource.url=jdbc:postgresql://15.98.0.65:5432/database
spring.datasource.username=postgres
spring.datasource.password=
spring.datasource.driver-class-name=org.postgresql.Driver


spring.jpa.show-sql=true

spring.jpa.hibernate.ddl-auto=none

我看到三个解决方案:

  1. ?currentSchema=eschema1添加到connection URL

  2. 永久更改该用户的 search path

    alter user postgres set search_path = 'public,eschema1';
    
  3. 告诉您的混淆层 (=ORM) 使用您配置的架构作为表的前缀。具体是怎么做到的,我也不知道


我强烈建议您使用与 postgres 不同的用户 - 即使它只是用于测试目的。