从没有关系的表中查询myBatis 3

时间:2015-10-11 17:13:53

标签: mysql mybatis ibatis spring-mybatis mybatis-generator

我得到StatementDetails: 表columns private String detailId; private BigDecimal tranxlogid; private String statementId;

transLog

columns private BigDecimal tranxlogid; private Date datetime;

StatementDetailsMapper.xml

然后在<sql id="Base_Column_List"> DETAIL_ID, TRANXLOGID, STATEMENT_ID, STATEMENT_GEN, STATEMENT_RECON </sql> <select id="reconStmtDetails" resultMap="StmtTranxDetailsResult" parameterType="java.lang.String"> select <include refid="Base_Column_List" /> from STATEMENT_DETAILS STD, POST_TRANX PT where PT.TRANXLOGID=STD.TRANXLOGID </select> ,我收到了一个问题:

The error occurred while setting parameters
Cause: java.sql.SQLSyntaxErrorException: ORA-00918: column ambiguously defined

如您所见,tranxlogid未映射到两个表之间,它只是一个字段。 但是,当我执行查询时,我遇到了错误:

POST_TRANX PT

似乎List<String[]> lines = new ArrayList<>(); sc.nextLine(); //skip line 1 while (sc.hasNextLine()) lines.add(sc.nextLine().split(" ")); 无效。

任何想法。感谢。

1 个答案:

答案 0 :(得分:0)

@BerndBuffen说的是真的,错误表明你可能在两个表中都存在一个列(至少TRANXLOGID),因此Oracle不知道要使用哪一个。所以你的MyBatis Base_Column_List应该是这样的:

<!-- since I don't know which column is from wich table I consider -->
<!-- it to be all from STD -->
<sql id="Base_Column_List">
    STD.DETAIL_ID, STD.TRANXLOGID, STD.STATEMENT_ID, STD.STATEMENT_GEN,
    STD.STATEMENT_RECON
</sql>