java.io.NotSerializableException: org.jboss.ejb.plugins.cmp.
fla83tn Aug 6, 2006 9:12 AMHi,
I'm trying to learn to manage relationship between two entity beans and the situation is the following:
I have a Customer that purchase orders, so an order have its own table Orders that is composed by 3 fields: id, customer and product purchased.
Thus, given some Customer I want to know all its purchased orders.
(Remark: Instead of Order I renamed it as OrderItem beacuse of it is a reserved word in mysql...)
So, I do the following to get the related orders:
Collection coll = client.getOrders(dto); if (coll!=null){ Iterator it = coll.iterator(); while (it.hasNext()) { System.out.println(">>>> ORDER FOUND! "); } }else{ System.out.println("<<<< ERROR RETRIEVING ORDERS..! >>>>>> "); }
But then I get this error:
java.lang.reflect.UndeclaredThrowableException at $Proxy1.getOrders(Unknown Source) at test.SessionFacadeTestClient.getOrders(SessionFacadeTestClient.java:290) at test.SessionFacadeTestClient.main(SessionFacadeTestClient.java:371) Caused by: java.io.NotSerializableException: org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
My ejb-jar is the following:
<entity> <ejb-name>Customer</ejb-name> <local-home>untitled2.entity.customer.CustomerHome</local-home> <local>untitled2.entity.customer.Customer</local> <ejb-class>untitled2.entity.customer.CustomerBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>untitled2.entity.customer.CustomerPK</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>Customer</abstract-schema-name> <cmp-field> <field-name>id</field-name> </cmp-field> <cmp-field> <field-name>name</field-name> </cmp-field> </entity> <entity> <ejb-name>OrderItem</ejb-name> <local-home>untitled2.entity.order.OrderItemHome</local-home> <local>untitled2.entity.order.OrderItem</local> <ejb-class>untitled2.entity.order.OrderItemBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>untitled2.entity.order.OrderItemPK</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>OrderItem</abstract-schema-name> <cmp-field> <field-name>id</field-name> </cmp-field> <cmp-field> <field-name>product</field-name> </cmp-field> <ejb-local-ref> <ejb-ref-name>ejb/Customer</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>untitled2.entity.customer.CustomerHome</local-home> <local>untitled2.entity.customer.Customer</local> <ejb-link>Customer</ejb-link> </ejb-local-ref> </entity>
The jbosscmp-jdbc.xml is:
<jbosscmp-jdbc> <defaults> <datasource>java:/examplesDB</datasource> <datasource-mapping>mySQL</datasource-mapping> <create-table>true</create-table> <remove-table>false</remove-table> <read-only>false</read-only> <pk-constraint>true</pk-constraint> <read-ahead> <strategy>on-load</strategy> <page-size>15</page-size> <eager-load-group>*</eager-load-group> </read-ahead> </defaults> <enterprise-beans> <entity> <ejb-name>Customer</ejb-name> <table-name>customer</table-name> <cmp-field> <field-name>id</field-name> <column-name>id</column-name> </cmp-field> <cmp-field> <field-name>name</field-name> <column-name>name</column-name> </cmp-field> </entity> <entity> <ejb-name>OrderItem</ejb-name> <table-name>orders</table-name> <cmp-field> <field-name>id</field-name> <column-name>id</column-name> </cmp-field> <cmp-field> <field-name>product</field-name> <column-name>product</column-name> </cmp-field> </entity> </enterprise-beans> <relationships> <ejb-relation> <ejb-relation-name>Customer-orders</ejb-relation-name> <foreign-key-mapping /> <ejb-relationship-role> <ejb-relationship-role-name>Customer-owns-orders</ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>customer</column-name> </key-field> </key-fields> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>orders-belongs-to-customer</ejb-relationship-role-name> <key-fields /> </ejb-relationship-role> </ejb-relation> </relationships> </jbosscmp-jdbc>
Obviously, I set up the mysql-ds.xml properly beacause the tables are created correctly!
Any ideas?