0

我得到:2 tables表:StatementDetailscolumns

    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>

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

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

好像POST_TRANX PT是无效的。

有任何想法吗。谢谢。

4

1 回答 1

0

@BerndBuffen 说的是真的,错误表明您可能得到了两个表中都存在的列(至少TRANXLOGID),因此 Oracle 不知道要使用哪一个。所以你的 MyBatisBase_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>
于 2015-10-12T02:03:22.093 回答