Spring会话与JDBC集成

Spring会话与JDBC集成,spring,session,jdbc,spring-session,Spring,Session,Jdbc,Spring Session,我是Spring会话新手,希望使用嵌入式数据库存储会话信息。我遵循所有的步骤 使用1.2.0版的spring会话jdbc,但仅使用3.2.4版的SpringWeb 重复显示以下错误: Caused by: org.postgresql.util.PSQLException: ERROR: relation "spring_session" does not exist 'Position: 13 at org.postgresql.core.v3.QueryExecutorImpl.re

我是Spring会话新手,希望使用嵌入式数据库存储会话信息。我遵循所有的步骤 使用1.2.0版的spring会话jdbc,但仅使用3.2.4版的SpringWeb 重复显示以下错误:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "spring_session" does not exist 'Position: 13
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:419)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:365)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:824)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589)
    ... 21 more'
这个问题已经困扰我好几天了。请帮忙

下面是xml配置

<bean class="org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessi‌​onConfiguration"/> 
<jdbc:embedded-database id="dataSource02" type="H2">
    <jdbc:script location="classpath:org/springframework/session/jdbc/schema-h2.sql"/>
</jdbc:embedded-database> 
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <constructor-arg ref="dataSource02"/>
</bean>

您的问题源于使用多个数据源的事实,因为在配置用于存储会话的辅助嵌入式数据源时,提供的stacktrace包括PostgreSQL JDBC驱动程序类

Spring会话配置将获取您的主数据源(PostgreSQL),并期望在那里找到会话表


我建议您使用主数据源存储会话数据,但是,如果您坚持使用辅助/嵌入式数据源来实现此目的,则需要使用您自己的实例覆盖
JdbcHttpSessionConfiguration#sessionRepository
提供的
JdbcOperationsSessionRepository
,该实例是使用辅助数据源及其相应的传输管理器创建的。请注意,必须将bean命名为
sessionRepository
,以便覆盖
JdbcHttpSessionConfiguration

中的一个bean。您的问题源于您使用多个数据源,因为在配置辅助数据源时,提供的stacktrace包括PostgreSQL JDBC驱动程序类,用于存储会话的嵌入式数据源

Spring会话配置将获取您的主数据源(PostgreSQL),并期望在那里找到会话表


我建议您使用主数据源存储会话数据,但是,如果您坚持使用辅助/嵌入式数据源来实现此目的,则需要使用您自己的实例覆盖
JdbcHttpSessionConfiguration#sessionRepository
提供的
JdbcOperationsSessionRepository
,该实例是使用辅助数据源及其相应的传输管理器创建的。请注意,bean必须命名为
sessionRepository
,以便覆盖
JdbcHttpSessionConfiguration

中的bean。您可以添加配置类吗?这不应该是注释,而是对您的问题的编辑(我为您做的)谢谢,是的,我不应该把conf放在注释中。你能添加你的配置类吗?这永远不应该是注释,而是对你的问题的编辑(我为你做的)。谢谢,是的,我不应该把conf放在注释中。