今天用户在使用系统功能中发现有个功能不正常,通过查看后台,发现系统报错,提示 未明确定义列,仔细查看是sqlmap中的一个条件出现了重复列的情况,导致Oracle不知道该条件是提供给那列的
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="T07_case_Assist">
<statement ....>
SELECT a.application_num,
a.assitno,
a.req_organkey,
a.req_time,
a.reasons,
a.deal_organkey,
a.handlereport,
a.deal_time,
a.status,
a.deal_user,
b.username as req_username,
c.username as deal_username,
t.party_id,
t.party_name
FROM T07_CASE_ASSIST a
left join t00_user c
on a.deal_user = c.username
inner join t00_user b
on a.req_user = b.username
left join T07_CASE_APPLICATION t
on a.application_num = t.application_num
where 1 > 0
<isNotEmpty prepend="AND" property="application_num">
APPLICATION_NUM=#application_num#
</isNotEmpty>
</statement>
</sqlmap>
其中红色行就为报错行,原因是T07_CASE_ASSIST和T07_CASE_APPLICATION中都存在名为APPLICATION_NUM的列,这时候如果仅仅写“APPLICATION_NUM=...”会让数据库困惑,需要带其表的别,也就修改为: a.APPLICATION_NUM=#application_num#可修正该错误
”