TooManyResultsException: Expected one result (or null) to be returned by selectOne()

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
 

原因:

查詢方法中得到兩個兩個結果集,然而返回只用了一個實體去接收。

 

解決方法:

使用聯合主鍵去唯一確定一條數據,更改spring-dao.xml中的sql代碼:

<select id="queryByIdWithSeckill" resultType="SuccessKilled">
    <!--根據id查詢SuccessKilled並攜帶秒殺對象實體-->
    <!--如何告訴MyBatis把結果映射到SuccessKilled同時映射Seckill屬性-->
    <!--mybatis可以自由控制sql-->
    <!--el表法式-->
    select
        sk.seckill_id,
        sk.user_phone,
        sk.create_time,
        sk.state,
        s.seckill_id "seckill.seckill_id",
        s.name "seckill.name",
        s.number "seckill.number",
        s.start_time "seckill.start_time",
        s.end_time "seckill.end_time",
        s.create_time "seckill.create_time"
    from success_killed sk
    inner join seckill s on sk.seckill_id = s.seckill_id
    where sk.seckill_id = #{seckillId} and sk.user_phone = #{userPhone};
</select>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章