我正在使用spring 4 / hibernate 4(没有jpa)开发多租户应用程序。我所有租户的用户数据都在master数据库中。将所有表都放在单个租户数据库中。使用Spring安全性对用户进行身份验证。如果用户通过身份验证,那么我设置tenatIdentifier。
对于用户管理,每个租户管理员都需要连接到master数据库,而不管他们自己的tenantIdentifier。我正在做一些像下面这样的事情。
Hash[*string.split(/[\n=]/)] # => {"key1"=>"value1", "key2"=>"value2"}
问题是除非我取消注释“交易”代码,否则我的用户不会持久存在。所以在我看来,春天@Transactional似乎不起作用。
另一方面,对于驻留在tenant db上的所有其他表,如果我使用sessionFactory.getCurrentSession()获取会话,则数据在租户数据库中保持良好状态。如果发生任何错误,它将正确回滚。所以Spring @Transactional注释似乎按预期工作。
我在这里做错了什么?欢迎任何帮助