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>