0 Replies Latest reply on Aug 6, 2006 9:12 AM by fla83tn

    java.io.NotSerializableException: org.jboss.ejb.plugins.cmp.

    fla83tn

      Hi,
      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?