No problem Mike. These things are good to know. However, I'm still
curious as to why it failed. If you ever figure it out. Please post it
here and we could possibly add it to the wiki for future reference.
Branon
On Fri, 18 Feb 2005 11:48:09 -0500, Mike Zatko <[EMAIL PROTECTED]> wrote:
> DB2 7 blows. I went and tried the same code on a workstation with a DB2
> 8 client and it worked. Sorry for wasting your time.
>
> Brandon Goodin wrote:
>
> >what is the driver and database that you are using?
> >
> >
> >On Fri, 18 Feb 2005 11:26:35 -0500, Mike Zatko <[EMAIL PROTECTED]> wrote:
> >
> >
> >>2.0.9
> >>
> >>Brandon Goodin wrote:
> >>
> >>
> >>
> >>>what version of ibatis are you using?
> >>>
> >>>
> >>>On Fri, 18 Feb 2005 11:16:23 -0500, Mike Zatko <[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>
> >>>
> >>>>*I tried it and it does not work. My error is as follows:*
> >>>>
> >>>>ResultSetLogProxy.java|41|DEBUG|2005-02-18
> >>>>11:13:16,756|3766|{rset-100020} ResultSet
> >>>>PromotionFacadeSqlMapsImpl.java|71|ERROR|2005-02-18 11:13:16,772|3782|
> >>>>--- The error occurred in configs/sqlmaps/promotions-sql.xml.
> >>>>--- The error occurred while applying a result map.
> >>>>--- Check the adjustment.getPromotionActionMap.
> >>>>--- The error happened while setting a property on the result object.
> >>>>--- Cause: com.ibatis.common.beans.ProbeException: Could not set
> >>>>property 'numberOfItems' for
> >>>>com.boscovs.commerce.promotion.dao.ActionDAO. Cause:
> >>>>java.lang.IllegalArgumentException
> >>>>Caused by: java.lang.IllegalArgumentException
> >>>>com.ibatis.common.jdbc.exception.NestedSQLException:
> >>>>--- The error occurred in configs/sqlmaps/promotions-sql.xml.
> >>>>--- The error occurred while applying a result map.
> >>>>--- Check the adjustment.getPromotionActionMap.
> >>>>--- The error happened while setting a property on the result object.
> >>>>--- Cause: com.ibatis.common.beans.ProbeException: Could not set
> >>>>property 'numberOfItems' for
> >>>>com.boscovs.commerce.promotion.dao.ActionDAO. Cause:
> >>>>java.lang.IllegalArgumentException
> >>>>Caused by: java.lang.IllegalArgumentException
> >>>>Caused by: com.ibatis.common.beans.ProbeException: Could not set
> >>>>property 'numberOfItems' for
> >>>>com.boscovs.commerce.promotion.dao.ActionDAO. Cause:
> >>>>java.lang.IllegalArgumentException
> >>>>Caused by: java.lang.IllegalArgumentException
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:183)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:99)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:561)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:536)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:97)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:69)
> >>>> at
> >>>>com.boscovs.commerce.promotion.PromotionFacadeSqlMapsImpl.applyPromotions(PromotionFacadeSqlMapsImpl.java:61)
> >>>> at test.PromotionTest.execute(PromotionTest.java:106)
> >>>> at test.PromotionTest.main(PromotionTest.java:171)
> >>>>Caused by: com.ibatis.common.beans.ProbeException: Could not set
> >>>>property 'numberOfItems' for
> >>>>com.boscovs.commerce.promotion.dao.ActionDAO. Cause:
> >>>>java.lang.IllegalArgumentException
> >>>>Caused by: java.lang.IllegalArgumentException
> >>>> at
> >>>>com.ibatis.common.beans.JavaBeanProbe.setProperty(JavaBeanProbe.java:309)
> >>>> at
> >>>>com.ibatis.common.beans.JavaBeanProbe.setObject(JavaBeanProbe.java:229)
> >>>> at com.ibatis.common.beans.GenericProbe.setObject(GenericProbe.java:73)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.accessplan.ComplexAccessPlan.setProperties(ComplexAccessPlan.java:34)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.exchange.JavaBeanDataExchange.setData(JavaBeanDataExchange.java:112)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setResultObjectValues(BasicResultMap.java:296)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.statement.RowHandlerCallback.handleResultObject(RowHandlerCallback.java:60)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:355)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:179)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:200)
> >>>> at
> >>>>com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:168)
> >>>> ... 8 more
> >>>>Caused by: java.lang.IllegalArgumentException
> >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>> at
> >>>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>>> at
> >>>>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>>> at java.lang.reflect.Method.invoke(Method.java:585)
> >>>> at
> >>>>com.ibatis.common.beans.JavaBeanProbe.setProperty(JavaBeanProbe.java:298)
> >>>> ... 18 more
> >>>>
> >>>>*Is it possible that its my database that is the problem? I am using DB2
> >>>>V7.2.*
> >>>>
> >>>>
> >>>>Brandon Goodin wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>I would recommend that you specify the jdbcType in your result.
> >>>>>
> >>>>><result property="numberOfItems" column="min_item_quantity"
> >>>>>jdbcType="INTEGER" javaType="int"/>
> >>>>>
> >>>>>On Fri, 18 Feb 2005 06:55:01 -0800 (PST), Karen Koch
> >>>>><[EMAIL PROTECTED]> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Are you perhaps missing the parameterClass arg on the statement itself?
> >>>>>>
> >>>>>>--- Mike Zatko <[EMAIL PROTECTED]> wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>/*I have a table as follows:*/
> >>>>>>>
> >>>>>>>sqltype sqllen sqlname.data
> >>>>>>>sqlname.length
> >>>>>>>-------------------- ------ ------------------------------
> >>>>>>>--------------
> >>>>>>>492 BIGINT 8
> >>>>>>>PROMO_ACTION_ID 15
> >>>>>>>492 BIGINT 8
> >>>>>>>PROMOTION_ID 12
> >>>>>>>452 CHARACTER 1
> >>>>>>>ACTIONTYPE 10
> >>>>>>>497 INTEGER 4
> >>>>>>>MIN_ITEM_QUANTITY 17
> >>>>>>>485 DECIMAL 20, 5
> >>>>>>>MIN_SINGLE_ITEM_VALUE 21
> >>>>>>>485 DECIMAL 20, 5
> >>>>>>>MIN_TOTAL_ITEM_VALUE 20
> >>>>>>>485 DECIMAL 20, 5
> >>>>>>>MIN_ORDER_VALUE 15
> >>>>>>>
> >>>>>>>
> >>>>>>>/*I have the following ResultMap*/
> >>>>>>>
> >>>>>>> <resultMap id="getPromotionActionMap"
> >>>>>>>class="com.boscovs.commerce.promotion.dao.ActionDAO">
> >>>>>>> <result property="type" column="actiontype" />
> >>>>>>> <result property="numberOfItems" column="min_item_quantity"
> >>>>>>>javaType="int"/>
> >>>>>>> <result property="individualItemValue"
> >>>>>>>column="min_single_item_value" javaType="double"/>
> >>>>>>> <result property="totalItemValue" column="min_total_item_value"
> >>>>>>>javaType="double"/>
> >>>>>>> <result property="totalValue" column="min_order_value"
> >>>>>>>javaType="double"/>
> >>>>>>> </resultMap>
> >>>>>>>
> >>>>>>>
> >>>>>>> <select id="getPromotionAction" resultMap="getPromotionActionMap">
> >>>>>>> <![CDATA[Select a.actiontype, a.min_item_quantity,
> >>>>>>> a.min_single_item_value,
> >>>>>>> a.min_total_item_value,
> >>>>>>> a.min_order_value
> >>>>>>> from DB2USR.PROMOTION as p, DB2USR.PROMO_ACTION a
> >>>>>>> where p.promotion_id = a.promotion_id
> >>>>>>> and p.promotion_id = #value#
> >>>>>>> and p.status='A']]>
> >>>>>>> </select>
> >>>>>>>
> >>>>>>>
> >>>>>>>/*My bean is as follows*/
> >>>>>>>
> >>>>>>>public class ActionDAO {
> >>>>>>>
> >>>>>>> public static enum Selected {
> >>>>>>> UNSELECTED, NO_ACTION, ADDS_X_ITEMS, TOTAL_ORDER_VALUE_AT_LEAST_X
> >>>>>>> }
> >>>>>>>
> >>>>>>> private Selected selected = Selected.UNSELECTED;
> >>>>>>> private XItems xItems;
> >>>>>>> private double totalValue;
> >>>>>>> private int numberOfItems;
> >>>>>>> private double individualItemValue;
> >>>>>>> private double totalItemValue;
> >>>>>>> private String type;
> >>>>>>>
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @return
> >>>>>>> */
> >>>>>>> public Selected getSelected() {
> >>>>>>> return selected;
> >>>>>>> }
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @return
> >>>>>>> */
> >>>>>>> public double getTotalValue() {
> >>>>>>> return totalValue;
> >>>>>>> }
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @return
> >>>>>>> */
> >>>>>>> public XItems getXItems() {
> >>>>>>> return xItems;
> >>>>>>> }
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @param i
> >>>>>>> */
> >>>>>>> public void setSelected(Selected i) {
> >>>>>>> selected = i;
> >>>>>>> }
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @param d
> >>>>>>> */
> >>>>>>> public void setTotalValue(double d) {
> >>>>>>> totalValue = d;
> >>>>>>> }
> >>>>>>>
> >>>>>>> /**
> >>>>>>> * @param items
> >>>>>>> */
> >>>>>>> public void setXItems(XItems items) {
> >>>>>>> xItems = items;
> >>>>>>> }
> >>>>>>>
> >>>>>>> public void setType(String type) {
> >>>>>>> this.type = type;
> >>>>>>> }
> >>>>>>>
> >>>>>>> public double getIndividualItemValue() {
> >>>>>>> return individualItemValue;
> >>>>>>> }
> >>>>>>> public void setIndividualItemValue(double individualItemValue) {
> >>>>>>> this.individualItemValue = individualItemValue;
> >>>>>>> }
> >>>>>>> public int getNumberOfItems() {
> >>>>>>> return numberOfItems;
> >>>>>>> }
> >>>>>>> public void setNumberOfItems(int numberOfItems) {
> >>>>>>> this.numberOfItems = numberOfItems;
> >>>>>>> }
> >>>>>>> public double getTotalItemValue() {
> >>>>>>> return totalItemValue;
> >>>>>>> }
> >>>>>>> public void setTotalItemValue(double totalItemValue) {
> >>>>>>> this.totalItemValue = totalItemValue;
> >>>>>>> }
> >>>>>>> /**
> >>>>>>> * toString method: creates a String representation of the object
> >>>>>>> * @return the String representation
> >>>>>>> * @author
> >>>>>>> */
> >>>>>>> public String toString() {
> >>>>>>> StringBuffer buffer = new StringBuffer();
> >>>>>>> buffer.append("ActionDAO[");
> >>>>>>> buffer.append("individualItemValue =
> >>>>>>> ").append(individualItemValue);
> >>>>>>> buffer.append(", numberOfItems = ").append(numberOfItems);
> >>>>>>> buffer.append(", selected = ").append(selected);
> >>>>>>> buffer.append(", totalItemValue = ").append(totalItemValue);
> >>>>>>> buffer.append(", totalValue = ").append(totalValue);
> >>>>>>> buffer.append(", type = ").append(type);
> >>>>>>> buffer.append(", xItems = ").append(xItems);
> >>>>>>> buffer.append("]");
> >>>>>>> return buffer.toString();
> >>>>>>> }}
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>/*I get an IllegalArgumentException from all this query. The developers
> >>>>>>>guide infers that you can use primitives in your definitions. Does it?
> >>>>>>>Or am I doing something stupid and not realizing it? BTW, it works if I
> >>>>>>>use Wrapper classes, but I don't want to have to go through all of my
> >>>>>>>beans and covert them. Thanks for any help.*/
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>--
> >>>>Michael H. Zatko
> >>>>Java Enterprise Developer
> >>>>Boscov's Information Services
> >>>>Work: 610-929-7317
> >>>>Home: 610-376-1624
> >>>>Page: 610-736-4460
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>--
> >>Michael H. Zatko
> >>Java Enterprise Developer
> >>Boscov's Information Services
> >>Work: 610-929-7317
> >>Home: 610-376-1624
> >>Page: 610-736-4460
> >>
> >>
> >>
> >>
> >
> >
> >
>
> --
> Michael H. Zatko
> Java Enterprise Developer
> Boscov's Information Services
> Work: 610-929-7317
> Home: 610-376-1624
> Page: 610-736-4460
>
>