使用JDBC的Spring会话 - 如何为会话表

时间:2017-03-22 14:39:50

标签: java spring session spring-boot

我正在使用Postgres的Spring Session来存储Spring启动应用程序的用户会话。 Spring Session正在寻找公共模式中的spring_session和spring_session_attributes表。有没有办法告诉Spring Session在公共模式以外的模式中查找会话表? application.properties中的spring.jpa.properties.hibernate.default_schema似乎对此没有任何影响。

3 个答案:

答案 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)。

不同数据库的模式可在以下网址获得:

https://github.com/spring-projects/spring-session/tree/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc

答案 2 :(得分:0)

您可以像这样在application.properties中设置供Spring Session使用的表名:

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

因此,Spring Session发出的SQL查询将与您指定架构的表相对应。另请参见org.springframework.session.jdbc.JdbcOperationsSessionRepository