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 つのテーブル間でマッピングされていないことがわかるように、これは単なるフィールドです。ただし、クエリを実行すると、エラーが発生しました。

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 に答える