2017-08-19 72 views
1

我是spring-boot中的新手,我想使用h2数据库将jdbc配置为弹簧会话,但它不创建数据库,表在我的h2嵌入式数据库中,它使用在我的应用程序属性文件中配置的PostgreSQL数据源在PostgreSQL中创建它。如何让我的Spring应用程序使用我的嵌入式h2数据库仅用于存储会话,而不与PostgreSQL数据源冲突(对于我的JPA在弹簧引导中使用JDBC和弹簧数据jpa为我的会话创建单独的数据源

https://github.com/eshiett1995/SessionProject)。我会爱如果有人可以帮助我与会议

+0

您可以粘贴代码或共享github URL到项目中吗?没有代码,很难找到适用的解决方案。 – DevDio

+0

@DevDio将做 –

+0

@DevDio完成它https://github.com/eshiett1995/SessionProject –

回答

0

检查https://github.com/nomanbplmp/CustomSessionStoreExample看到完整的例子。

为了使会话存储与除主数据库以外的其他数据库一起工作,需要提供自定义会话存储库并覆盖Spring的内部,如下所示。

@Configuration 
@EnableJdbcHttpSession 
class SessionConfig { 
    @Bean 
    public JdbcOperationsSessionRepository sessionRepository(){ 
     DataSource ds = DataSourceBuilder.create().driverClassName("org.h2.Driver").username("sa").url("jdbc:h2:file:~/test").build(); 
    return new SessionRepo(ds,new DataSourceTransactionManager(ds)); 

    } 
} 


class SessionRepo extends JdbcOperationsSessionRepository { 

    public SessionRepo(DataSource dataSource, PlatformTransactionManager transactionManager) { 
     super(dataSource, transactionManager); 

    } 


} 
+0

它不工作,与@Primary,它只是在我的实体在h2db创建一个表 –

+0

更新我的答案..创建一个示例应用 –

+0

它没有工作,因为我想要的。它根据我的需要在h2数据库中创建会话表,但不是在PostgreSQL中创建实体,而是在h2中创建它们。 –