CMP doesnt work for me...help...please
atatinen Aug 31, 2001 3:10 PMok. i been tryin to get this CMP running for a while.
i have a simple EJB. I am posting all of my code here.
can anyone take a look at it and let me know what am i doing wrong?.
thanks
My bean class
// // -- Java Code Generation Process -- package junk.test.Test; // Import Statements import javax.ejb.*; import java.rmi.RemoteException; import javax.ejb.*; public class TestEJB implements javax.ejb.EntityBean { public String name; public EntityContext EJB_Context; public TestPK pk; public TestEJB () { } public void ejbActivate () { } public void ejbPassivate () { } public void ejbLoad () { } public void ejbStore () { } public void ejbRemove () throws javax.ejb.RemoveException { } public void setEntityContext (javax.ejb.EntityContext ctx) { } public void unsetEntityContext () { } public junk.test.Test.TestPK ejbCreate () throws java.rmi.RemoteException, javax.ejb.CreateException { return null; } public void ejbPostCreate () throws javax.ejb.CreateException { } public String getname () { return name; } public void setname (String name) { this.name = name; } public junk.test.Test.TestPK getpk () { return pk; } public void setpk (junk.test.Test.TestPK pk) { this.pk = pk; } }
My remote interface
// // -- Java Code Generation Process -- package junk.test.Test; // Import Statements import javax.ejb.*; import java.rmi.RemoteException; import javax.ejb.*; public interface Test extends javax.ejb.EJBObject { public String getname () throws java.rmi.RemoteException; public void setname (String name) throws java.rmi.RemoteException; public junk.test.Test.TestPK getpk () throws java.rmi.RemoteException; public void setpk (junk.test.Test.TestPK pk) throws java.rmi.RemoteException; }
my home interface[/]
// // -- Java Code Generation Process -- package junk.test.Test; // Import Statements import javax.ejb.*; import java.rmi.RemoteException; import javax.ejb.*; public interface TestHome extends javax.ejb.EJBHome { public junk.test.Test.Test findByPrimaryKey (junk.test.Test.TestPK primaryKey) throws java.rmi.RemoteException, javax.ejb.FinderException; public junk.test.Test.Test create () throws java.rmi.RemoteException, javax.ejb.CreateException; }
My ejb-jar file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
junk.test.Test.TestHome
junk.test.Test.Test
<ejb-class>junk.test.Test.TestEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>junk.test.Test.TestPK</prim-key-class>
False
<primkey-field>pk</primkey-field>
<cmp-field><field-name>pk</field-name></cmp-field>
<cmp-field><field-name>name</field-name></cmp-field>
</enterprise-beans>
</ejb-jar>
My jboss.xml
<?xml version="1.0" encoding="Cp1252"?>
false
<container-configurations />
<resource-managers />
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
<jndi-name>test/Test</jndi-name>
<configuration-name></configuration-name>
</enterprise-beans>
My Jaws.xml file
java:/OracleDB
<type-mapping>Oracle8</type-mapping>
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
<table-name>Test</table-name>
<remove-table>false</remove-table>
<create-table>false</create-table>
<cmp-field>
<field-name>pk.id</field-name>
<column-name>id</column-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
<column-name>name</column-name>
</cmp-field>
</enterprise-beans>
MY primary key
// // -- Java Code Generation Process -- package junk.test.Test; // Import Statements import java.io.Serializable; public class TestPK implements java.io.Serializable { public int id; public int hashCode () { return 0; } public boolean equals () { return true; } public java.lang.String toString () { return "" + id; ; } public TestPK () { } public int getid() { return id; } public void setid(int id) { this.id = id; } }
I am using pspy to log the sql being generated. this is what see in the log when fire a client for this ejb.
SELECT COUNT(*) FROM Test WHERE id=?|SELECT COUNT(*) FROM Test WHERE id='[B@179f67'
clearly the id is being equaled to the string representation of primary key object.
I followed the docs assuming that the primary key class is dependent class and included the pk.id in the attributes in jaws.xml.
can some one please help