MyBatis - 加入同一个表返回错误的值

时间:2013-11-01 12:34:43

标签: java mybatis


   我尝试从同一个表中获取2个不同的记录,在一个连接中使用不同的键连接,但我得到相同的对象两次。查询是:

SELECT  ISID, ISISIN, ISNMRC, ISTIME, ISTEXT, ISPZDT, ISZADA, ISPOPL,
     petitioner.POICO, petitioner.PONMAF,  petitioner.POADSI,  petitioner.POIDMA,
     ADSTR, ADPSC,ADCIT,
     bic.BCLCVA, bic.BCBIC, bic.BCPOCP, bic.BCICO,
     emitent.PONMAF, emitent.POICO
    FROM FVIS00 as isin
    left outer join FEPO00 as petitioner on isin.ISZADA = petitioner.POID
    left outer join FEAD00 as address on petitioner.POADSI = address.ADID
    left outer join FVBC00 as bic on isin.ISISIN = bic.BCCDVA
    left outer join FEPO00 as emitent on bic.BCICO = emitent.POICO     

结果图:

<resultMap type="ISIN" id="isin">
    <result property="id" column="ISID"/>
    <result property="isin" column="ISISIN"/>
    <result property="user" column="ISNMRC"/>
    <result property="created" column="ISTIME"/>
    <result property="submited" column="ISPZDT"/>
    <result property="text" column="ISTEXT"/>
    <result property="fee" column="ISPOPL"/>
    <association property="petitioner" javaType="LegalPerson" column="ISZADA">
        <result property="ico" column="POICO"/>
        <result property="name" column="PONMAF"/>
         <association property="address" javaType="Address" column="POADSI">
            <result property="street" column="ADSTR"/>
            <result property="code" column="ADPSC"/>
            <result property="town" column="ADCIT"/>
         </association>
    </association>
    <association property="bic" javaType="BIC" column="BCCDVA">
        <result property="shortName" column="BCLCVA"/>
        <result property="bic" column="BCBIC"/>
        <result property="form" column="BCPOCP"/>
        <result property="ico" column="BCICO"/>
        <association property="emitent" javaType="LegalPerson" column="BCICO" >
            <result property="name" column="PONMAF"/>
            <result property="ico" column="POICO"/>
        </association>
    </association>
</resultMap>

但我总是使用请愿者的值获得 emitent

##                                                                   |                   petitoner                 |                                                                                              |               emitent                     |                    ##
CS0005001502    22. 08. 2005    07. 05. 2010 11.22:06.000    580,00    47115629    Burza cenných papírů Praha a.s.    11005    Praha 1            Rybná 14                         BAACISBO    list    00486949    47115629    Burza cenných papírů Praha a.s.    PR_LR    převod z SCP
CS0005001544    23. 08. 2005    07. 05. 2010 11.22:06.000    580,00    47115629    Burza cenných papírů Praha a.s.    11005    Praha 1            Rybná 14                         BABCISBO    list    00486949    47115629    Burza cenných papírů Praha a.s.    PR_LR    převod z SCP
CS0005002864    24. 08. 2005    07. 05. 2010 11.22:06.000    580,00    00002127    AERO,                              19904    Praha 9-letňany    Beranových 130    AERO           BAAAERO     zakn    00002127    00002127    AERO, a.s.                         PR_LR    převod z SCP
CS0005002963    25. 08. 2005    07. 05. 2010 11.22:06.000    580,00    47115629    Burza cenných papírů Praha a.s.    11005    Praha 1            Rybná 14          ČKD BLANSKO    BAACKDBK    zakn    00002208    47115629    Burza cenných papírů Praha a.s.    PR_LR    převod z SCP

预期结果:

##                                                             |                   petitoner                 |                                                                                          |            emitent                   |                    ##
CS0005001502  2010-05-07-11.22.06.000000 2005-08-22     580,00   47115629  Burza cenných papírù Praha a.s.         11005   Praha 1               Rybná 14                               BAACISBO   list   00486949  null     null                PR_LR převod z SCP
CS0005001544  2010-05-07-11.22.06.000000 2005-08-23     580,00   47115629  Burza cenných papírù Praha a.s.         11005   Praha 1               Rybná 14                               BABCISBO   list   00486949  null     null                PR_LR převod z SCP
CS0005002864  2010-05-07-11.22.06.000000 2005-08-24     580,00   00002127  AERO, a.s.                              19904   Praha 9-letòany       Beranových 130          AERO           BAAAERO    zakn   00002127  00002127 AERO, a.s.          PR_LR převod z SCP
CS0005002963  2010-05-07-11.22.06.000000 2005-08-25     580,00   47115629  Burza cenných papírù Praha a.s.         11005   Praha 1               Rybná 14                ČKD BLANSKO    BAACKDBK   zakn   00002208  00002208 ÈKD Blansko, a.s.   PR_LR převod z SCP 

正如您所看到的,emitent始终与请愿者具有相同的值,并且连接键对于两个表具有不同的值(字段左侧为emitent)

我做错了什么或是MyBatis中的错误?

提前感谢任何建议。

阿形

1 个答案:

答案 0 :(得分:1)

我怀疑它是一个命名冲突问题 - MyBatis无法区分不同的列。你可以重命名冲突列吗?

SELECT  ISID, ISISIN, ISNMRC, ISTIME, ISTEXT, ISPZDT, ISZADA, ISPOPL,
     petitioner.POICO, petitioner.PONMAF,  petitioner.POADSI,  petitioner.POIDMA,
     ADSTR, ADPSC,ADCIT,
     bic.BCLCVA, bic.BCBIC, bic.BCPOCP, bic.BCICO,
     emitent.PONMAF AS emitentPONMAF, emitent.POICO AS emitentPOICO
    FROM FVIS00 as isin
    left outer join FEPO00 as petitioner on isin.ISZADA = petitioner.POID
    left outer join FEAD00 as address on petitioner.POADSI = address.ADID
    left outer join FVBC00 as bic on isin.ISISIN = bic.BCCDVA
    left outer join FEPO00 as emitent on bic.BCICO = emitent.POICO

顺便提一下列和表的隐藏名称! FEPO00真的吗?! : - )