jpetstore-iBatis and db2 compatibility
--------------------------------------
Key: IBATIS-262
URL: http://issues.apache.org/jira/browse/IBATIS-262
Project: iBatis for Java
Type: Improvement
Components: SQL Maps
Versions: 2.1.7
Environment: DB2 Environment
Reporter: Harinder Nandyala
Priority: Minor
SQL Map which needs a fix:
<select id="getItem" resultClass="item" parameterClass="string"
cacheModel="quantityCache">
select
ITEMID,
LISTPRICE,
UNITCOST,
SUPPLIER AS supplierId,
I.PRODUCTID AS "product.productId",
NAME AS "product.name",
DESCN AS "product.description",
CATEGORY AS "product.categoryId",
STATUS,
ATTR1 AS attribute1,
ATTR2 AS attribute2,
ATTR3 AS attribute3,
ATTR4 AS attribute4,
ATTR5 AS attribute5,
QTY AS quantity
from ITEM I, INVENTORY V, PRODUCT P
where P.PRODUCTID = I.PRODUCTID
and I.ITEMID = V.ITEMID
and I.ITEMID = #value#
</select>
****************************************************************************
Error reported when tested from WSAD, iBatis and DB2:
Caused by: com.ibatis.dao.client.DaoException: Failed to execute queryForObject
- id [getItem], parameterObject [EST-6]. Cause:
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in
com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml.
--- The error occurred while applying a parameter map.
--- Check the getItem-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0203N A
reference to column "ITEMID" is ambiguous. SQLSTATE=42702
************************************************Quote from Jeff's
mail***********************
This error means that a column in the select list is in two or more of the
joined tables. You must qualify the column name with the table (or alias) in
the select list.
It looks to me like the "getItem" query is probably the offending one. Simple
solution - put "i." in front of the itemid like this:
SELECT
I.ITEMID
...
There may be more of these, you'll have to work them through. I would consider
this a bug in JPetStore (hsqldb must be very forgiving - my guess is that this
would fail on most databases). It would be good of you to open a JIRA ticket
with the details so we don't forget to make a change.
Jeff Butler
************************************************
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira