I encounter some problems while using resin CMP.
I find that when I get a object and update the value of attribute, resin don't really update it, instead it produce a new record
This violate the primary key constraint of my database so error occurs:
Exception while try to update invoice: com.caucho.ejb.EJBExceptionWrapper: com.caucho.transaction.RollbackExceptionWrapper: com.caucho.ejb.EJBExceptionWrapper: com.sybase.jdbc2.jdbc.SybSQLException: Attempt to insert duplicate key row in object 'invoice_items' with unique index 'invoice_it_14011080821'
My method of update data is simple, it is just the following codes:
myInvoiceItem = invoiceItemHome.findByJobNumberAndTarget(invoice_jobNo, invoice_target);
myInvoiceItem.setPrice(to_supplier);
InvoiceItem findByJobNumberAndTarget(
String job_number, String target)
throws FinderException;
<query>
<query-method>
<method-name>findByJobNumberAndTarget</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[
SELECT o FROM invoiceItems o
WHERE UPPER(o.jobNumber) LIKE UPPER(?1)
AND UPPER(o.invoiceTarget) LIKE UPPER(?2)
]]>
</ejb-ql>
</query>
I really don't know what is the problem. Can anyone help me?