sharding-jdbc1.5.3,无需分库分表的表,配置default-data-source,单表查询正常,多表关联查询找不到数据源
spring + mybatis + sharding-jdbc1.5.3 + oracle
多表关联查询时,报错:
### SQL: select a.roleid,a.rolename,a.remark,a.createtime?? from mr_role a, mr_userrole b where a.roleid=b.roleid and b.userid=?
Caused by: com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException: Cannot find table rule and default data source with logic tables: '[mr_role, mr_userrole]'
?at com.dangdang.ddframe.rdb.sharding.routing.type.complex.ComplexRoutingEngine.route(ComplexRoutingEngine.java:81)
?at com.dangdang.ddframe.rdb.sharding.routing.router.ParsingSQLRouter.route(ParsingSQLRouter.java:117)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
createtime后面2个问号只是日志拷贝导致,实际执行SQL在mybatis的xml中,2个问号处只是换了行:
select a.roleid,a.rolename,a.remark,a.createtime
from mr_role a, mr_userrole b where a.roleid=b.roleid and b.userid=#{userid}
mr_role, mr_userrole都是在默认数据源。仅是普通关联查询。同样的配置,执行单表查询正常。
create table mr_role (
roleid integer not null ,
rolename varchar(50) not null ,
remark varchar(255) ,
createtime varchar2(19) default to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') not null
);
create table mr_userrole (
userid integer not null ,
roleid integer not null ,
createtime varchar2(19) default to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') not null ,
constraint pk_mr_userrole primary key (userid, roleid)
);
createtime后面的两个问号是什么意思,是不是sql本身就写错了?
mr_role, mr_userrole都是在默认数据源么?信息不足,无法定位。至少需要配置信息,sql执行的sql.show日志,数据库表结构以及全部的执行代码才可能判断是否有问题