org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
sql99标准的查询语句,在SQLyog中执行该语句,可以查出来三条记录,因为该电影包含了三个标签。
<select id="findById" parameterType="java.lang.Integer" resultMap="movieMap">
SELECT m.id mid,title,published_time,length,director,scriptwriter,performer,cover_path,resource_path,info_intro,is_recommend,is_comment,likes,plays,reviews,t.id tid,t.name tname,d.id did,d.name dname
FROM t_movie m
inner join ct_movie_tag mt on m.id=mt.movie_id
inner join t_tag t On mt.tag_id = t.id
inner join t_district d On m.district_id = d.id
WHERE m.id = #{id};
</select>
。
我把这个查询语句改成sql92标准之后,可以正确的查询。
。
<select id="findById" parameterType="java.lang.Integer" resultMap="movieMap">
SELECT m.id id,title,published_time,length,director,scriptwriter,performer,cover_path,resource_path,info_intro,is_recommend,is_comment,likes,plays,reviews,
t.id tid,t.name tname,d.id did,d.name dname
FROM t_tag t,ct_movie_tag mt,t_movie m,t_district d
where m.id = mt.movie_id
and mt.tag_id = t.id
and m.district_id = d.id
and m.id = #{id};
</select>