java - 如何使用 JDBC 在 spring-session 中初始化模式

标签 java spring hibernate spring-boot spring-session

我正在使用 Spring Boot 2.0.x、Hibernate 和 Spring Session Jdbc 以及 Mysql 5.7。 我在开发环境下工作,因此 Hibernate 配置为每次生成模式:

spring.jpa.hibernate.ddl-auto=create-drop

它工作正常,但我在 Spring Session 方面遇到问题...... 我尝试设置initialize-schema,但它不起作用。

spring.session.jdbc.initialize-schema=always

是否可以自动生成完整架构(所有实体和 SPRING_SESSION)?

它不适用于 MySQL 和 H2(我尝试了嵌入式选项)

最佳答案

我正在描述这些步骤。它对我有用。

1- 在 pom 文件中添加依赖项。

<dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-jdbc</artifactId>
    </dependency>

2-在项目的“resources”文件下添加具有相同路径和相同名称的sql文件。

路径:/org/springframework/session/jdbc/schema-mysql.sql

架构-mysql.sql

CREATE TABLE SPRING_SESSION (
    PRIMARY_ID CHAR(36) NOT NULL,
    SESSION_ID CHAR(36) NOT NULL,
    CREATION_TIME BIGINT NOT NULL,
    LAST_ACCESS_TIME BIGINT NOT NULL,
    MAX_INACTIVE_INTERVAL INT NOT NULL,
    EXPIRY_TIME BIGINT NOT NULL,
    PRINCIPAL_NAME VARCHAR(100),
    CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;

CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);

CREATE TABLE SPRING_SESSION_ATTRIBUTES (
    SESSION_PRIMARY_ID CHAR(36) NOT NULL,
    ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
    ATTRIBUTE_BYTES BLOB NOT NULL,
    CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
    CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;

我从 Spring 官方 github 帐户获取了 sql 文件。

https://github.com/spring-projects/spring-session/blob/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc/schema-mysql.sql

3-将以下属性添加到 application.properties

spring.session.jdbc.initialize-schema=always
spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-mysql.sql

如果它再次不起作用,请告诉我。就像我说的,它对我有用。 enter image description here

关于java - 如何使用 JDBC 在 spring-session 中初始化模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823174/

相关文章:

Java 聊天客户端 jtextfield 与 jtextarea

java - 在 Java 中每秒重复访问数组项

java - Apache Camel Unmarshal 到 Singleton Scoped Bean

java - hibernate 条件和if语句?

hibernate - Hibernate过滤器插件在Grails中不起作用

java - 编写 hibernate 函数的正确方法

java - 如何在 session Bean (EJB) 中获取请求参数?

java - Gradle 3.0.0 的 Android 插件 : Could not find com. google.http-client :google-http-client-parent:1. 24.1

Javax 验证不适用于值为数组或列表的 Hashmap

java - 在 spring mvc 中使用ajax将列表数据绑定(bind)到模型