正如你可以通过标题理解我的情况是:
这是我的代码:
deck2
所以,代码应该没问题,但是在线程执行期间我得到了这些错误:
mongoose.plugin(testPlugin)
和
var value = document.getElementById("theInput").innerHTML;
console.log(value);
我认为问题在于租户范围。我想使用一个服务从DB获取所有数据,但我想知道是否有办法在一个线程中获得正确的租户范围或传递它。
感谢所有人!
答案 0 :(得分:0)
我找到了解决方案。基本上,多租户插件通过数据库表获取租户:
所以在Config.groovy中我有
tenant {
mode = "singleTenant"
datasourceResolver.type = "db"
}
DataSource.groovy为每个环境提供了找出租户的正确表格:
CREATE TABLE `data_source_tenant_map` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`data_source` varchar(255) NOT NULL COMMENT 'JNDI',
`mapped_tenant_id` int(11) NOT NULL,
`file_source` varchar(255) NOT NULL,
`data_source_secondary` varchar(255) DEFAULT NULL,
`db_url` varchar(1000) DEFAULT NULL COMMENT 'Url db multitenant',
`db_username` varchar(100) DEFAULT NULL COMMENT 'Username db multitenant',
`db_password` varchar(100) DEFAULT NULL COMMENT 'Password db multitenant',
`base_path` varchar(255) DEFAULT NULL COMMENT 'Root of path on fs',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=280 DEFAULT CHARSET=utf8;
使用此插件,未与主线程连接的每个线程都会丢失Hibernate会话,因此租户引用。为了获得合适的租户,我使用了这些方法:
def myTenantKey = my_mapped_tenant_id
TenantUtils.doWithTenant(myTenantKey ) {
// Do something as usual
}
您必须导入TenantUtils类
import grails.plugin.multitenant.core.util.TenantUtils
我希望它对其他人有用! 再见!