我有一个数据库(MySql)和几个模式(schema_a、schema_b、schema_c)。模式具有相同的表,相同。
当前模式取决于当前用户(会话)数据。例如,当前用户来自 A 公司,则当前架构为“schema_a”。因此,EmployeeRepository.findAll() 方法从模式“schema_a”中获取数据。
在使用 spring boot 2 休眠时,是否可以动态更改当前 entityManager?如果是,如何?
请帮忙
我有一个数据库(MySql)和几个模式(schema_a、schema_b、schema_c)。模式具有相同的表,相同。
当前模式取决于当前用户(会话)数据。例如,当前用户来自 A 公司,则当前架构为“schema_a”。因此,EmployeeRepository.findAll() 方法从模式“schema_a”中获取数据。
在使用 spring boot 2 休眠时,是否可以动态更改当前 entityManager?如果是,如何?
请帮忙
你所说的被称为多租户架构。
您可以catalog
根据一些身份验证信息设置(即您的情况下的架构)。
你将如何做到这一点是实现一个interceptor
确定需要设置什么架构,然后将正确的“租户”设置为TheardLocal
(运行您的请求的)。我使用这种方法取得了巨大的成功,我相信这正是您正在寻找的。
我可以在这里写出来,但是没有必要重复已经存在的内容。有一篇很好的文章,它是我解决方案的灵感,我建议你看看这里。