这是我的配置文件
<sqlMap>
<typeAlias alias="erpSales" type="com.richfit.bi.imap.business.ErpSalesRelation"/>
<resultMap id="erpSaleRef" class="erpSales">
<result property="id" column="ID"/>
<result property="areaId" column="AREAID"/>
<result property="typeId" column="TYPEID"/>
<result property="income" column="INCOME"/>
<result property="typeName" column="ERP_SALES_TYPE.TYPENAME"/>
<result property="areaName" column="ERP_SALES_AREA.AREANAME"/>
</resultMap>
<!-- 获得销售对象-->
<select id="querySpecErpSales" parameterClass="string" resultMap="erpSaleRef" >
<![CDATA[
SELECT rel.Id,rel.AREAID,rel.TYPEID,rel.INCOME,type.TYPENAME,area.AREANAME
FROM ERP_SALES_RELATION rel,ERP_SALES_TYPE type,ERP_SALES_AREA area
WHERE area.AREANAME=#areaName# and area.AREAID=rel.AREAID and rel.TYPEID= type.TYPEID
]]>
</select>
</sqlMap>
这是我的ErpSalesRelation类
public class ErpSalesRelation
{
private int id;
private int typeId;
private int areaId;
private String typeName;
private String areaName;
private String income;
-----省略set/get方法
这是我的数据表
create table ERP_SALES_AREA
(
AREAID NUMBER(20) not null,
AREANAME VARCHAR2(14)
)
create table ERP_SALES_TYPE
(
TYPEID NUMBER(20) not null,
TYPENAME VARCHAR2(14)
)
create table ERP_SALES_RELATION
(
ID NUMBER(20) not null,
AREAID NUMBER(20) not null,
TYPEID NUMBER(20) not null,
INCOME VARCHAR2(20)
)
运行后报异常:
java.sql.SQLException: 列名无效
请高手指点到底拿错了.....!!!!
------解决方案--------------------
<result property="typeName" column="ERP_SALES_TYPE.TYPENAME"/>
<result property="areaName" column="ERP_SALES_AREA.AREANAME"/>
去掉表名试下,我刚刚在DB2上,用表名加列名就会报错
------解决方案--------------------
估计是你<resultMap id="erpSaleRef" class="erpSales"> ,对应的是ErpSalesRelation类,而ErpSalesRelation类中的属性就直接是typeName、areaName,到时传值因在ErpSalesRelation类中有set\get,可以直接获值; 而非对象ERP_SALES_TYPE、ERP_SALES_AREA的属性,所以不需要加上具体的类名(对应的是表字段)