BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #48838同步于 2016/3/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]mybatis 多表配置问题

ccqccq
2016/3/27镜像同步3 回复
两个表都没问题,三个表出问题,求帮助 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="/"> <resultMap id="LocationPhoneMap" type="LocationPhone"> <id property="LOCATIONID" column="plus_numtabmob.LOCATIONID" /> <result property="PHONENUM" column="PHONENUM" /> <!-- property代表对象的字段,column代表数据库中的列 --> <association property="LOCATIONID" column="LOCATIONID" javaType="LocationPhone"> <id property="LOCATIONID" column="plus_locationid.LOCATIONID" /> <id property="PROVINCEID" column="plus_locationid.PROVINCEID" /> <association property="PROVINCEID" column="PROVINCEID" javaType="LocationPhone"> <id property="PROVINCEID" column="plus_provinceid.PROVINCEID"/> <result property="PROVINCENAME" column="PROVINCENAME"/> </association> </association> </resultMap> <select id="selectProvinceName" resultMap="LocationPhoneMap"> <!-- select PROVINCEID from plus_locationid inner join plus_numtabmob on plus_locationid.LOCATIONID = plus_numtabmob.LOCATIONID where PHONENUM="1859666"; --> select PROVINCENAME from plus_provinceid inner join plus_locationid on plus_provinceid.PROVINCEID = plus_locationid.PROVINCEID inner join plus_numtabmob on plus_locationid.LOCATIONID = plus_numtabmob.LOCATIONID where PHONENUM="1859666"; </select> </mapper> 报错: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/unisk/Desktop/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/unisk/.m2/repository/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 2016-03-27 13:50:38,329 [main] DEBUG [/.selectProvinceName] - ==> Preparing: select PROVINCENAME from plus_provinceid inner join plus_locationid on plus_provinceid.PROVINCEID = plus_locationid.PROVINCEID inner join plus_numtabmob on plus_locationid.LOCATIONID = plus_numtabmob.LOCATIONID where PHONENUM="1859666"; 2016-03-27 13:50:38,374 [main] DEBUG [/.selectProvinceName] - ==> Parameters: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'PROVINCEID' of 'class com.unisk.antifraud.dbobject.LocationPhone' with value 'com.unisk.antifraud.dbobject.LocationPhone@5b275dab' Cause: java.lang.IllegalArgumentException: argument type mismatch ### The error may exist in com/unisk/antifraud/map/locationPhone.xml ### The error may involve /.selectProvinceName ### The error occurred while handling results ### SQL: select PROVINCENAME from plus_provinceid inner join plus_locationid on plus_provinceid.PROVINCEID = plus_locationid.PROVINCEID inner join plus_numtabmob on plus_locationid.LOCATIONID = plus_numtabmob.LOCATIONID where PHONENUM="1859666"; ### Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'PROVINCEID' of 'class com.unisk.antifraud.dbobject.LocationPhone' with value 'com.unisk.antifraud.dbobject.LocationPhone@5b275dab' Cause: java.lang.IllegalArgumentException: argument type mismatch at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98) at com.unisk.antifraud.service.DBMatch.main(DBMatch.java:35) Caused by: org.apache.ibatis.reflection.ReflectionException: Could not set property 'PROVINCEID' of 'class com.unisk.antifraud.dbobject.LocationPhone' with value 'com.unisk.antifraud.dbobject.LocationPhone@5b275dab' Cause: java.lang.IllegalArgumentException: argument type mismatch at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:175) at org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:57) at org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:133) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:808) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:758) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:802) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:758) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:724) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:267) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:239) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:153) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108) ... 3 more Caused by: java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.ibatis.reflection.invoker.MethodInvoker.invoke(MethodInvoker.java:40) at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:170) ... 21 more
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
zhumeng2010机器人#1 · 2016/3/27
日志写的是参数类型不对?
ccqccq机器人#2 · 2016/3/27
解决了,参数对的,就是放的位置,调整一下就行了……谢谢 【 在 zhumeng2010 的大作中提到: 】 : 日志写的是参数类型不对?
MayIuMay机器人#3 · 2016/3/31
ccq是不是你发的贴?哈哈! 通过『我邮2.0』发布