Hi, I'm trying to use JBoss (newest CVS) with Oracle and I made a class
"mypackage.category.beans.CategoryEntityBean".

public class CategoryEntityBean implements EntityBean {
 public Integer  id;
 public String name = null;
 public String description = null;
...
}

In jaws.xml I defined a CMP-field like this:
   <cmp-field>
     <field-name>id</field-name>
     <column-name>id</column-name>
     <sql-type>INTEGER</sql-type>
     <jdbc-type>INTEGER</jdbc-type>
   </cmp-field>

When I call
CategoryEntity ce = categoryEntityHome.findByPrimaryKey(new Integer(42));

I get the following error:
[JAWS] Load SQL:SELECT id,description,name FROM category WHERE id=?
        at java.lang.reflect.Field.set(Native Method)
        at
org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.loadEntity(JAWSPersistence
Manager.java:697)[Default] java.rmi.ServerException: Load failed; nested
exception is:
        .
        .
        java.lang.IllegalArgumentException: argument type mismatch
[Default] java.lang.IllegalArgumentException: argument type mismatch


Then I put before line 697 "((Field)cmpFields.get(i)).set(ctx.getInstance(),
rs.getObject(idx++));" in
JAWSPersistenceManager:

System.out.println("ctx.getInstance()="+ctx.getInstance());
System.out.println("idx="+idx);
System.out.println("rs.getObject(idx)="+rs.getObject(idx));
System.out.println("rs.getObject(idx).getClass()="+rs.getObject(idx).getClas
s());
System.out.println("cmpFields.get(i)="+cmpFields.get(i));

and it returned:

[JAWS] Load SQL:SELECT id,description,name FROM category WHERE id=?
[Default] ctx.getInstance()=CategoryEntityBean 0
[Default] idx=1
[Default] rs.getObject(idx)=42
[Default] rs.getObject(idx).getClass()=class java.math.BigDecimal
[Default] cmpFields.get(i)=public java.lang.Integer
mypackage.category.beans.CategoryEntityBean.id
        at java.lang.reflect.Field.set(Native Method)
        at
org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.loadEntity(JAWSPersistence
Manager.java:697)[Default] java.rmi.ServerException: Load failed; nested
exception is:
        java.lang.IllegalArgumentException: argument type mismatch
[Default] java.lang.IllegalArgumentException: argument type mismatch

Surprise, surprise: why BigDecimal? Is this a problem with Oracles
JDBC-driver or JAWS?
It's working fine, when I call findAll(), but not when I call
findByPrimaryKey(...)

(
Btw. when I change
public Integer id;
to
public int id;
I get the same error, except that
[Default] cmpFields.get(i)=public java.lang.Integer
mypackage.category.beans.CategoryEntityBean.id
changes to
[Default] cmpFields.get(i)=public int
mypackage.category.beans.CategoryEntityBean.id
)


Keep up the good work!
Heiko Seebach

--
Heiko Seebach           WEB.DE AG
Online Developer        Amalienbadstr. 41
Fon: +49 721 94329-857  D-76227 Karlsruhe
Fax: +49 721 94329-22   Germany
[EMAIL PROTECTED]    http://web.de



--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Problems?:           [EMAIL PROTECTED]

Reply via email to