从没有关系的表中查询 myBatis 3
myBatis 3 query from tables without relationship
我得到了2 tables
:
Table StatementDetails
与 columns
:
private String detailId;
private BigDecimal tranxlogid;
private String statementId;
Table 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
无效。
任何想法。谢谢。
@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>
我得到了2 tables
:
Table StatementDetails
与 columns
:
private String detailId;
private BigDecimal tranxlogid;
private String statementId;
Table 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
无效。
任何想法。谢谢。
@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>