我有2张 table
: 带有列
的表StatementDetails
:
private String detailId;
private BigDecimal tranxlogid;
private String statementId;
带有列
的表transLog
:
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 没有在两个表之间映射,它只是一个字段。 但是,当我执行查询时,出现错误:
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>