用mybatis映射SQL语句的时候出现异常 java.lang.UnsupportedOperationException

部分报错如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database.  Cause: java.lang.UnsupportedOperationException
### The error may exist in file [E:\git\gitworkspace\lotteryNetwork\lottery\target\classes\com\yc\ssq\bean\UserSsqMapper.xml]
### The error may involve com.yc.ssq.bean.UserSsqMapper.findAfterBuy
### The error occurred while handling results
### SQL: select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from    (select usid,userid,orderid,ordertime from userSsq where usid=?) a    inner join    (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=?) b    on a.usid = b.usid
### Cause: java.lang.UnsupportedOperationException
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:79)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
    at $Proxy24.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
    at com.yc.dao.impl.BaseDaoMybatisImpl.findAll(BaseDaoMybatisImpl.java:99)
    at com.yc.ssq.biz.impl.UserSsqBizImpl.findTest(UserSsqBizImpl.java:82)
    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)

... ...

在日志中的记录如下:

2017-08-20 20:07:56  org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:145)  ==>  Preparing: select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from (select usid,userid,orderid,ordertime from userSsq where usid=?) a inner join (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=?) b on a.usid = b.usid
2017-08-20 20:07:56  org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:145)  ==> Parameters: 8(Integer), 8(Integer)

按照这个语句逻辑来说,这个语句和参数都是没有问题的,那么问题就可能出在mapper的返回值类型上:

<select id="findAfterBuy" parameterType="java.lang.Integer" resultType="java.util.List">
        select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from
            (select usid,userid,orderid,ordertime from userSsq where usid=#{usid}) a
            inner join
            (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=#{usid}) b
            on a.usid = b.usid
    </select>

问题所在:resultType="返回结果类型",一般把结果映射到对应的JAVAbean,select 返回的每一条记录的类型,而不是所有记录组成的类型。我需要得到的是List<UserSsq>,每一条得到的结果类型是UserSsq,所以应该修改为如下:

<select id="findAfterBuy" parameterType="java.lang.Integer" resultType="UserSsq">
        select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from
            (select usid,userid,orderid,ordertime from userSsq where usid=#{usid}) a
            inner join
            (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=#{usid}) b
            on a.usid = b.usid
    
    </select>

问题就解决了,返回结果如下:

[

UserSsq [usid=8, userid=null, orderid=20170820187327, ordertime=2017-08-20 17:11:48.0, betlists=null, ssqs=[ ]  ],

UserSsq [usid=8, userid=null, orderid=20170820187327, ordertime=2017-08-20 17:11:48.0, betlists=null, ssqs=[ ]  ]

]

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值