Spring 引导 2 休眠多模式

Spring boot 2 hibernate multiple schema

我有一个数据库 (MySql) 和几个模式 (schema_a、schema_b、schema_c)。模式具有相同的表,完全相同。

当前架构取决于当前用户(会话)数据。例如,当前用户来自公司A,则当前架构为"schema_a"。因此,EmployeeRepository.findAll() 方法从模式 "schema_a".

中获取数据

在 spring 启动 2 的休眠状态下,是否可以动态更改当前的 entityManager?如果是,如何?

求助

你说的是多租户架构。

您可以根据一些身份验证信息设置 catalog(在您的情况下是模式)。

你将如何做到这一点是实现一个 interceptor 来确定需要设置什么模式,然后将正确的 "tenant" 设置为 TheardLocal(你的请求是 运行).我使用这种方法取得了巨大的成功,我相信它正是您正在寻找的东西。

我可以在这里写出来,但是没有必要继续重复已经存在的内容。有一篇很好的文章,是我解决问题的灵感,建议你看看here.