【发布时间】:2019-01-16 00:27:25
【问题描述】:
我必须能够重命名默认 Spring Session 表,并在 spring session documentation 中找到以下配置选项。
spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-@@platform@@.sql # 用于初始化数据库模式的 SQL 文件的路径。 spring.session.jdbc.table-name=SPRING_SESSION # 用于存储会话的数据库表的名称。
这是我要在 application.properties 中设置的内容:
spring.session.store-type=jdbc
spring.session.jdbc.table-name: APP_SPR_SESSION
spring.session.jdbc.schema: src/main/resources/appSpringSession.sql
这里是 appSpringSession.sql 的内容,它是 schema-oracle.sql 的修改/重命名版本
CREATE TABLE app_app.APP_SPR_SESSION (
PRIMARY_ID CHAR(36) NOT NULL,
SESSION_ID CHAR(36) NOT NULL,
CREATION_TIME NUMBER(19,0) NOT NULL,
LAST_ACCESS_TIME NUMBER(19,0) NOT NULL,
MAX_INACTIVE_INTERVAL NUMBER(10,0) NOT NULL,
EXPIRY_TIME NUMBER(19,0) NOT NULL,
PRINCIPAL_NAME VARCHAR2(100 CHAR),
CONSTRAINT APP_SPR_SESSION_PK PRIMARY KEY (PRIMARY_ID)
);
CREATE UNIQUE INDEX APP_SPR_SESSION_IX1 ON APP_SPR_SESSION (SESSION_ID);
CREATE INDEX APP_SPR_SESSION_IX2 ON APP_SPR_SESSION (EXPIRY_TIME);
CREATE INDEX APP_SPR_SESSION_IX3 ON APP_SPR_SESSION (PRINCIPAL_NAME);
CREATE TABLE app_app.APP_SPR_SESSION_ATTRIBUTES (
SESSION_PRIMARY_ID CHAR(36) NOT NULL,
ATTRIBUTE_NAME VARCHAR2(200 CHAR) NOT NULL,
ATTRIBUTE_BYTES BLOB NOT NULL,
CONSTRAINT APP_SPR_SESSION_ATTRIBUTES_PK PRIMARY KEY
(SESSION_PRIMARY_ID,
ATTRIBUTE_NAME),
CONSTRAINT APP_SPR_SESSION_ATTRIBUTES_FK FOREIGN KEY
(SESSION_PRIMARY_ID)
REFERENCES APP_SPR_SESSION(PRIMARY_ID) ON DELETE CASCADE
);
我已使用上述 ddl 手动将表添加到 Oracle 数据库中,并且每次应用启动时它仍在寻找 SPRING_SESSION 表。 似乎指定这些选项没有效果。我从文档中读错了什么?
我也在使用 Spring Session 2.0.2 Release 和 Spring Boot 2.0.1.RELEASE
【问题讨论】:
-
提供您正在使用的 Spring Boot 和 Spring Session 版本会很有用。另外,您的代码中是否有一些明确的 Spring Session 配置?我主要指的是
@EnableJdbcHttpSession的使用。 -
是的,我有@EnableJdbcHttpSession
-
只需删除@EnableJdbcHttpSession
标签: spring oracle spring-boot spring-jdbc spring-session