我正在使用Postgres的Spring Session来存储Spring启动应用程序的用户会话。 Spring Session正在寻找公共模式中的spring_session和spring_session_attributes表。有没有办法告诉Spring Session在公共模式以外的模式中查找会话表? application.properties中的spring.jpa.properties.hibernate.default_schema似乎对此没有任何影响。
答案 0 :(得分:1)
我设法通过在连接字符串/数据源URL中指定架构来解决问题,如下所示(也如答案here中所述):
spring.datasource.url=jdbc:postgresql://localhost:9999/db_name?currentSchema=<schema_name>
仍然不确定为什么application.properties中的spring.session.jdbc.schema属性对spring会话使用的模式没有影响...
答案 1 :(得分:1)
实际上,参数spring.session.jdbc.schema并不意味着“数据库模式”,而是SQL模式(定义存储会话数据的数据结构的SQL)。
不同数据库的模式可在以下网址获得:
答案 2 :(得分:0)
您可以像这样在application.properties
中设置供Spring Session使用的表名:
spring.session.jdbc.table-name = MY_SCHEMA.SPRING_SESSION
因此,Spring Session发出的SQL查询将与您指定架构的表相对应。另请参见org.springframework.session.jdbc.JdbcOperationsSessionRepository
。