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

myBatis 3 query from tables without relationship

我得到了2 tables: Table StatementDetailscolumns:

    private String detailId;

    private BigDecimal tranxlogid;

    private String statementId;

Table transLogcolumns:

    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>

如您所见,tranxlogid 并未在 2 个表之间映射,它只是一个字段。 但是,当我执行查询时,出现错误:

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

似乎POST_TRANX PT无效。

任何想法。谢谢。

@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>