Skip to main content
 首页 » 编程设计

mysql之myBatis 3 从没有关系的表中查询

2023年09月21日4152php

我有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>