A表和B表左连接 条件A.id=B.id
A表和C表左连接 条件A.id=C.id
B表和C表左连接 条件B.name=C.name
需要用到2个不同的C表集合,但是用下面的作法,集合C2没有取到值(其实用sql可以取到)。
调查发现集合C1,C2是用的同一个表结构,sql执行后,列名重复,所以C2没有取到值,请问这个问题该怎么解决?
sql:
SELECT
A.*,B.*,C1.*,C2.*
FROM
A
LEFT JOIN B ON A.ID = B.ID
LEFT JOIN C AS C1 ON A.ID = C1.ID
LEFT JOIN C AS C2 ON B.NAME = C2.NAME
查询用到的entity
@SuppressWarnings("PMD.UnusedPrivateField")
@Getter
@Setter
public class Entity implements Serializable {
private AEntity A;
private BEntity B;
private List<CEntity> C1;
private List<CEntity> C2;
}
mybatis用到的xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xx.xx.xxx.MybatisMapper">
<resultMap id="resultMap_XXXXXXXXX"
type="xx.xx.xxx.Entity "
autoMapping="true" >
<association property="A" resultMap="xx.xx.resultMap_AEntity" />
<association property="B" resultMap="xx.xx.resultMap_BEntity" />
<collection property="C1" resultMap="xx.xx.resultMap_C1Entity" />
<collection property="C2" resultMap="xx.xx.resultMap_C2Entity" />
</resultMap>
<select id="select_result" resultOrdered="true"
resultMap="resultMap_XXXXXXXXX"
parameterType="xx.xx.xxx.MybatisParameter"
fetchSize="500">
SELECT
A.*,B.*,C1.*,C2.*
FROM
A
LEFT JOIN B ON A.ID = B.ID
LEFT JOIN C AS C1 ON A.ID = C1.ID
LEFT JOIN C AS C2 ON B.NAME = C2.NAME
</select>
</mapper>