org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR
List<Map> message= (List<Map>) itTvLiveMessageService.seachTvMessage(id); List<TTvLiveMessage> newMessage=new ArrayList<TTvLiveMessage>(); if(message!=null){ for (int i=0;i<message.size();i++){ TTvLiveMessage tt=new TTvLiveMessage(); tt.setTime((Date) message.get(i).get("time")); tt.setTvId((Integer) message.get(i).get("TvId")); tt.setMessage((String) message.get(i).get("message")); tt.setMember((String) message.get(i).get("member")); tt.setId((Integer) message.get(i).get("id")); tt.setAvater((String) message.get(i).get("avater")); tt.setM_nick((String) message.get(i).get("m_nick")); if(0!=(Integer) message.get(i).get("feedId")){ tt.setFeedId((Integer) message.get(i).get("feedId")); tt.setFeedName(itTvLiveMessageService.seachNickName((Integer) message.get(i).get("feedId")));//出错 System.out.println(message.get(i).get("feedId").toString()); } newMessage.add(tt); } }
以上一段代码,总是在调用sql返回参数的时候出了问题,检查了下sql,发现我返回的String类型。
@Select("SELECT t3.m_nick'feedName' \n" + "FROM t_tv_live_message t1 \n" + "LEFT JOIN t_tv_live_message t2 ON t1.feedId=t2.id \n" + "LEFT JOIN t_member t3 ON t2.member=t3.m_id \n" + "WHERE t1.feedId=#{id}") String seachTvNickName(@Param("id") int id)
但是查询出的数据为多个数组类型。在select 加个去重DISTINCT
@Select("SELECT DISTINCT t3.m_nick'feedName' \n" + "FROM t_tv_live_message t1 \n" + "LEFT JOIN t_tv_live_message t2 ON t1.feedId=t2.id \n" + "LEFT JOIN t_member t3 ON t2.member=t3.m_id \n" + "WHERE t1.feedId=#{id}") String seachTvNickName(@Param("id") int id)
问题解决