Mybatis期望selectOne()返回一个结果(或null),但是找到:190

时间:2016-01-07 22:15:03

标签: java mybatis

我正在尝试从数据库中检索值,但我无法获取所有值。我得到了TooManyResultsException

MapperInterface

这是我正在调用的映射器接口。

public interface ITranslatorDAO
{
    Map<String, Map<String, String>> translate();
}

mapper.xml

这部分是我针对DB运行的SQL,它有190行。我想检索所有行,但它正在抛出异常,如下所述。

<select id="translate"  resultType="map">
    SELECT
        section,
        data,
        translation
    FROM
        web_data..wd_ofx_translate
    ORDER BY
        section,
        data,
        translation
</select>

异常追溯

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

2 个答案:

答案 0 :(得分:2)

你应该添加@MapKey告诉mybatis你想要的表中哪一列作为地图的键,比如使用section column作为地图的键:

public interface ITranslatorDAO{
        @MapKey("section") 
        Map<String, Map<String, String>> translate();
}

答案 1 :(得分:-2)

如果要运行选择一行行的查询,则使用selectOne()方法。如果要选择多行,请使用其他方法。