I found the answer to my own question.

I need to change the <sql> element for "eh_event_data" to look like the
following:

 <sql name="eh_event_data" type="longvarchar" dirty="ignore"/>

This will keep ev_event_data from showing up in the WHERE clause of the
UPDATE.

Cheers...

> -----Original Message-----
> From: Beck, Brad [mailto:[EMAIL PROTECTED]] 
> Sent: Tuesday, September 17, 2002 10:30 AM
> To: [EMAIL PROTECTED]
> Subject: [castor-dev] Updating an object with a longvarchar field...
> 
> 
> I have an existing DB2 table (EVENT_HISTORY) to which I've 
> mapped the object Request (see below). This table has a LONG 
> VARCHAR column that corresponds to Request.text.
> 
> When I try to use db.update(request) to update a Request that 
> has been modified, I get the following error from DB2:
> 
> COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/6000] 
> SQL0401N  The data types of the operands for the operation 
> "=" are not compatible. SQLSTATE=42818
> 
> After some investigation, it turns out that the LONG VARCHAR 
> is showing up in the WHERE clause generated by Castor and 
> this causes the above error.
> 
> Is there a way to work around this?
> 
> Thanks in advance.
> 
> Brad Beck
> Lead Software Engineer, TLR BIS
> Phone: 651.848.2401
> [EMAIL PROTECTED]
> 
> EVENT_HISTORY (DB2 Table)
> -------------
> eh_session_id         CHAR(32) NOT NULL   \
> eh_event_seq_num              NUMERIC(7) NOT NULL |- Primary Key
> eh_user_id                    CHAR(32) NOT NULL   /
> ..................
> eh_event_type         CHAR(18) NOT NULL
> eh_event_ver_code             CHAR(2) NOT NULL
> eh_event_timestamp    TIMESTAMP NOT NULL
> eh_event_data         LONG VARCHAR NOT NULL
> eh_event_source               CHAR(7) NOT NULL
> eh_msg_queue_name             VARCHAR(50) NOT NULL
> eh_process_name               VARCHAR(40) NOT NULL
> eh_ins_timestamp              TIMESTAMP NOT NULL
> eh_status_code                CHAR(1) NOT NULL
> 
> Request (Corresponding Java Object)
> -------
> public class Request {
>   protected String eventType;
>   protected String srcId;
>   protected String eventVer;
>   protected String sessGuid;
>   protected String userGuid;
>   protected Date date;
>   protected Date insertDate;
>   protected int sequenceNbr;
>   protected String text;
>   protected String queueName;
>   protected String status;
>   protected String processName;
> 
>   // ... Getter/setters removed for brevity
> }
> 
> Requestmapping.xml
> ------------------
> <?xml version="1.0"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD 
> Version 1.0//EN" "http://castor.exolab.org/mapping.dtd";>
> <mapping>
>   <class name="com.tlr.onlinecharges.session.misc.Request"
> identity="sessGuid sequenceNbr userGuid">
>     <description>Event History</description>
>     <map-to table="dcdetail.event_history"/>
>     <field name="sessGuid" type="string" required="true">
>       <sql name="eh_session_id" type="char"/>
>     </field>
>     <field name="sequenceNbr" type="integer" required="true">
>       <sql name="eh_event_seq_num" type="numeric"/>
>     </field>
>     <field name="userGuid" type="string" required="true">
>       <sql name="eh_user_id" type="char"/>
>     </field>
>     <field name="eventType" type="string" required="true">
>       <sql name="eh_event_type" type="char"/>
>     </field>
>     <field name="eventVer" type="string" required="true">
>       <sql name="eh_event_ver_code" type="char"/>
>     </field>
>     <field name="date" type="date" required="true">
>       <sql name="eh_event_timestamp" type="timestamp"/>
>     </field>
>     <field name="insertDate" type="date" required="true">
>       <sql name="eh_ins_timestamp" type="timestamp"/>
>     </field>
>     <field name="text" type="string" required="true">
>       <sql name="eh_event_data" type="longvarchar"/>
>     </field>
>     <field name="srcId" type="string" required="true">
>       <sql name="eh_event_source" type="char"/>
>     </field>
>     <field name="queueName" type="string" required="true">
>       <sql name="eh_msg_queue_name" type="char"/>
>     </field>
>     <field name="processName" type="string" required="true">
>       <sql name="eh_process_name" type="char"/>
>     </field>
>     <field name="status" type="string" required="true">
>       <sql name="eh_status_code" type="char"/>
>     </field>
>   </class>
> </mapping>
> 
> requestdatabase.xml
> -------------------
> <!DOCTYPE databases PUBLIC "-//EXOLAB/Castor JDO 
> Configuration DTD Version 1.0//EN"
>                            "http://castor.exolab.org/jdo-conf.dtd";>
> <database name="dcdt" engine="db2" >
>       <data-source class-name="COM.ibm.db2.jdbc.DB2DataSource">
>       <params user="dcuser" password="..." database-name="dcdt" />
>       </data-source>
>       <mapping href="requestmapping.xml" />
> </database>
> 
> ----------------------------------------------------------- 
> If you wish to unsubscribe from this mailing, send mail to 
> [EMAIL PROTECTED] with a subject of:
>       unsubscribe castor-dev
> 

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to