Как инициализировать схему в Spring-сессии JDBC - PullRequest
0 голосов
/ 18 декабря 2018

Я использую 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 (япробовал embedded вариант)

1 Ответ

0 голосов
/ 18 декабря 2018

Я описываю шаги. Это сработало для меня.

1- Добавьте зависимость в ваш файл pom.

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

2 - Добавьте файл sql в ваш проект с тем жепуть и то же имя в файле «ресурсов».

PATH: /org/springframework/session/jdbc/schema-mysql.sql

schema-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;

Я получил файл sql из официального аккаунта Spring Github.

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

...