jpress 怎么实现 跨数据库 多表联查
- 技术交流
- 2154次浏览
库名.表名的方法试过 没有效果
需要从这两个库里进行关联查询 join方法不能满足需求。
以上两张表关联查询 ,user表的old_user_id 是原项目的用户表的外键,sensor_record表里的 create_by,update_by,approver是指向user表的old_user_id,查询的时候不能跨库,有什么解决办法么。跪求大佬!
库名.表名的方法试过 没有效果
需要从这两个库里进行关联查询 join方法不能满足需求。
以上两张表关联查询 ,user表的old_user_id 是原项目的用户表的外键,sensor_record表里的 create_by,update_by,approver是指向user表的old_user_id,查询的时候不能跨库,有什么解决办法么。跪求大佬!
2个回答
两个不同的库是不能这样来玩的,看 http://www.jpress.io/club/post/13
海哥
回复Sql: select count(*) FROM zmyj_test.sensor_record a LEFT JOIN gama_admin.user b ON (a.approver = b.id or a.approver = b.old_user_id)
LEFT JOIN gama_admin.user createBy ON (a.create_by = createBy.id or a.create_by = createBy.old_user_id) where 1=?
2019-03-12 11:37:09.651 ERROR io.jboot.web.handler.JbootActionHandler - /admin/sensorRecord
com.jfinal.plugin.activerecord.ActiveRecordException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'zmyj_test'@'222.188.127.230' for table 'user'
at com.jfinal.plugin.activerecord.Model.doPaginate(Model.java:464)
at com.jfinal.plugin.activerecord.Model.paginate(Model.java:433)
at io.jboot.db.model.JbootModel.paginate(JbootModel.java:507)
at io.jpress.module.sensorRecord.service.provider.SensorRecordServiceProvider.paginate(SensorRecordServiceProvider.java:89)
at io.jpress.module.sensorRecord.service.provider.SensorRecordServiceProvider$$EnhancerByCGLIB$$57195f5f.CGLIB$paginate$5(<generated>)
at io.jpress.module.sensorRecord.service.provider.SensorRecordServiceProvider$$EnhancerByCGLIB$$57195f5f$$FastClassByCGLIB$$d6f77eed.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.jfinal.aop.Invocation.invoke(Invocation.java:84)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:78)
at io.jboot.components.limiter.LimiterInterceptor.doProcess(LimiterInterceptor.java:59)
at io.jboot.components.limiter.LimiterInterceptor.intercept(LimiterInterceptor.java:40)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:75)
at io.jboot.aop.interceptor.cache.JbootCacheInterceptor.intercept(JbootCacheInterceptor.java:43)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:75)
at io.jboot.aop.interceptor.cache.JbootCachePutInterceptor.intercept(JbootCachePutInterceptor.java:40)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:75)
at io.jboot.aop.interceptor.cache.JbootCachesEvictInterceptor.intercept(JbootCachesEvictInterceptor.java:43)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:75)
at io.jboot.aop.interceptor.cache.JbootCacheEvictInterceptor.intercept(JbootCacheEvictInterceptor.java:37)
at io.jboot.aop.JbootAopInvocation.invoke(JbootAopInvocation.java:75)
at io.jboot.aop.JbootAopInterceptor.intercept(JbootAopInterceptor.java:11)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at com.jfinal.aop.Callback.intercept(Callback.java:96)
at io.jpress.module.sensorRecord.service.provider.SensorRecordServiceProvider$$EnhancerByCGLIB$$57195f5f.paginate(<generated>)
at io.jpress.module.sensorRegister.controller._SensorRecordModuleController.index(_SensorRecordModuleController.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.jfinal.aop.Invocation.invoke(Invocation.java:75)
at io.jpress.web.interceptor.PermissionInterceptor.intercept(PermissionInterceptor.java:54)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at io.jpress.web.interceptor.UserInterceptor.intercept(UserInterceptor.java:52)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at io.jpress.web.interceptor.AdminInterceptor.intercept(AdminInterceptor.java:67)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at io.jpress.web.interceptor.CSRFInterceptor.renderNormal(CSRFInterceptor.java:86)
at io.jpress.web.interceptor.CSRFInterceptor.intercept(CSRFInterceptor.java:43)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at io.jpress.web.interceptor.UTMInterceptor.intercept(UTMInterceptor.java:91)
at com.jfinal.aop.Invocation.invoke(Invocation.java:69)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:47)
at io.jpress.core.addon.interceptor.AddonInterceptorProcesser.intercept(AddonInterceptorProcesser.java:34)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.support.metric.JbootMetricInterceptor.intercept(JbootMetricInterceptor.java:41)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.support.shiro.JbootShiroInterceptor.intercept(JbootShiroInterceptor.java:33)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.support.jwt.JwtInterceptor.processInvoke(JwtInterceptor.java:67)
at io.jboot.support.jwt.JwtInterceptor.intercept(JwtInterceptor.java:46)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.web.validate.ParaValidateInterceptor.intercept(ParaValidateInterceptor.java:55)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.web.cors.CORSInterceptor.intercept(CORSInterceptor.java:57)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.components.limiter.LimiterInterceptor.doProcess(LimiterInterceptor.java:59)
at io.jboot.components.limiter.LimiterInterceptor.intercept(LimiterInterceptor.java:35)
at io.jboot.web.fixedinterceptor.FixedInvocation.invoke(FixedInvocation.java:45)
at io.jboot.web.handler.JbootActionHandler.invokeInvocation(JbootActionHandler.java:196)
at io.jboot.web.handler.JbootActionHandler.handle(JbootActionHandler.java:99)
at io.jboot.web.handler.JbootFilterHandler.handle(JbootFilterHandler.java:45)
at io.jpress.core.addon.handler.AddonHandlerProcesser$1.handle(AddonHandlerProcesser.java:47)
at io.jpress.core.addon.handler.AddonHandlerProcesser.handle(AddonHandlerProcesser.java:41)
at io.jpress.web.handler.JPressHandler.handle(JPressHandler.java:62)
at io.jpress.core.install.InstallHandler.handle(InstallHandler.java:30)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:89)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SELECT command denied to user 'zmyj_test'@'222.188.127.230' for table 'user'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at com.jfinal.plugin.activerecord.DbPro.query(DbPro.java:64)
at com.jfinal.plugin.activerecord.Db.query(Db.java:70)
at com.jfinal.plugin.activerecord.Model.doPaginateByFullSql(Model.java:478)
at com.jfinal.plugin.activerecord.Model.doPaginate(Model.java:462)
... 96 common frames omitted
sunhui198942
回复