我得到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(" "));
无效。
任何想法。感谢。
答案 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>