Java 使用JDBC的Spring会话-如何为会话表指定模式

Java 使用JDBC的Spring会话-如何为会话表指定模式,java,spring,session,spring-boot,Java,Spring,Session,Spring Boot,我正在使用带Postgres的Spring会话来存储Spring启动应用程序的用户会话。Spring会话正在公共模式中查找Spring_会话和Spring_会话属性表。有没有办法告诉Spring会话在公共模式以外的模式中查找会话表?application.properties中的spring.jpa.properties.hibernate.default\u架构似乎对此没有影响。我通过在连接字符串/数据源URL中指定架构来解决问题,如下所示(也如回答中所述): spring.datasourc

我正在使用带Postgres的Spring会话来存储Spring启动应用程序的用户会话。Spring会话正在公共模式中查找Spring_会话和Spring_会话属性表。有没有办法告诉Spring会话在公共模式以外的模式中查找会话表?application.properties中的spring.jpa.properties.hibernate.default\u架构似乎对此没有影响。

我通过在连接字符串/数据源URL中指定架构来解决问题,如下所示(也如回答中所述):

spring.datasource.url=jdbc:postgresql://localhost:9999/db_name?currentSchema=

仍然不确定为什么application.properties中的spring.session.jdbc.schema属性对spring session使用的模式没有影响…

实际上,参数spring.session.jdbc.schema不是指“数据库模式”,而是指SQL模式(定义存储会话数据的数据结构的SQL)

不同数据库的模式可在以下位置获得:


您可以在
应用程序中设置Spring会话使用的表名。属性如下所示:

spring.session.jdbc.table-name = MY_SCHEMA.SPRING_SESSION
因此,Spring会话发出的SQL查询将与指定模式的表相冲突。另请参见
org.springframework.session.jdbc.jdboperationsessionrepository

spring.session.jdbc.table-name = MY_SCHEMA.SPRING_SESSION