Hi, I've got a bunch of CMPs (running on JBoss 3.2.5) representing an order 
with orderLine. Here are the links:

Order -1----*-> OrderLine -1----1-> Item
  |
  V
Customer

My problem comes when I want to create an order. With existing Customer and 
Items, I want to create (in one go) an Order with its OrderLines. When I do 
that I've got the following exception

15:53:01,187 ERROR [LogInterceptor] TransactionRolledbackException in method: 
public abstract java.lang.String com.yaps.
  | 
petstore.server.service.order.OrderService.createOrder(java.lang.String,java.util.Map)
 throws javax.ejb.CreateException,
  | com.yaps.petstore.common.exception.CheckException,java.rmi.RemoteException, 
causedBy:
  | javax.ejb.EJBException: Method is not a known CMP field accessor, CMR field 
accessor, or ejbSelect method: methodName=setOrder
  |         at 
org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:83)
  |         at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:62)
  |         at 
com.yaps.petstore.server.domain.orderline.OrderLineBean$Proxy.setOrder(<generated>)
  |         at 
com.yaps.petstore.server.domain.orderline.OrderLineBean.ejbPostCreate(Unknown 
Source)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:324)
  |         at 
org.jboss.ejb.plugins.CMPPersistenceManager.postCreateEntity(CMPPersistenceManager.java:235)
  |         at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.postCreateEntity(CachedConnectionInterceptor
  | .java:277)


I've localised the problem but I can't solve it or explain it. It's in the 
postCreate of the OrderLine CMP when it calls the setOrder method. If I take it 
our, the exception doesn't occur but in the database I've got a foreign key set 
to null, normal.

    public String ejbCreate(int quantity, double unitCost, OrderLocal order, 
ItemLocal item) throws CreateException, CheckException {
  | 
  |         setId(getUniqueId(COUNTER_NAME));
  |         setUnitCost(unitCost);
  |         setQuantity(quantity);
  |         return null;
  |     }
  | 
  |     public void ejbPostCreate(int quantity, double unitCost, OrderLocal 
order, ItemLocal item) throws CreateException, CheckException {
  | 
  |         setOrder(order);
  |         setItem(item);
  |     }


The method setOrder IS a CMR Method and it's declared abstract like all the 
other getters and setters

    public abstract int getQuantity();
  |     public abstract void setQuantity(final int quantity);
  | 
  |     public abstract double getUnitCost();
  |     public abstract void setUnitCost(final double unitCost);
  | 
  |     public abstract OrderLocal getOrder();
  |     public abstract void setOrder(final OrderLocal order);
  | 
  |     public abstract ItemLocal getItem();
  |     public abstract void setItem(final ItemLocal item);

And here are bits of the ejb-jar.xml

        <entity>
  |             <display-name>OrderEB</display-name>
  |             <ejb-name>OrderBean</ejb-name>
  |             
<local-home>com.yaps.petstore.server.domain.order.OrderLocalHome</local-home>
  |             <local>com.yaps.petstore.server.domain.order.OrderLocal</local>
  |             
<ejb-class>com.yaps.petstore.server.domain.order.OrderBean</ejb-class>
  |             <persistence-type>Container</persistence-type>
  |             <prim-key-class>java.lang.String</prim-key-class>
  |             <reentrant>False</reentrant>
  |             <cmp-version>2.x</cmp-version>
  |             <abstract-schema-name>Order</abstract-schema-name>
  |             <cmp-field>
  |                 <field-name>id</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>status</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>orderDate</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>firstname</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>lastname</field-name>
  |             </cmp-field>
  |             <primkey-field>id</primkey-field>
  |         </entity>
  | 
  |         <entity>
  |             <display-name>OrderLineEB</display-name>
  |             <ejb-name>OrderLineBean</ejb-name>
  |             
<local-home>com.yaps.petstore.server.domain.orderline.OrderLineLocalHome</local-home>
  |             
<local>com.yaps.petstore.server.domain.orderline.OrderLineLocal</local>
  |             
<ejb-class>com.yaps.petstore.server.domain.orderline.OrderLineBean</ejb-class>
  |             <persistence-type>Container</persistence-type>
  |             <prim-key-class>java.lang.String</prim-key-class>
  |             <reentrant>False</reentrant>
  |             <cmp-version>2.x</cmp-version>
  |             <abstract-schema-name>OrderLine</abstract-schema-name>
  |             <cmp-field>
  |                 <field-name>id</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>quantity</field-name>
  |             </cmp-field>
  |             <cmp-field>
  |                 <field-name>unitCost</field-name>
  |             </cmp-field>
  |             <primkey-field>id</primkey-field>
  |         </entity>

And the relationship part

        <ejb-relation>
  |             <ejb-relation-name>OrderBean - OrderLineBean</ejb-relation-name>
  |             <ejb-relationship-role>
  |                 
<ejb-relationship-role-name>order-has-orderLines</ejb-relationship-role-name>
  |                 <multiplicity>One</multiplicity>
  |                 <relationship-role-source>
  |                     <ejb-name>OrderBean</ejb-name>
  |                 </relationship-role-source>
  |                 <cmr-field>
  |                     <cmr-field-name>orderLines</cmr-field-name>
  |                     <cmr-field-type>java.util.Collection</cmr-field-type>
  |                 </cmr-field>
  |             </ejb-relationship-role>
  | 
  |             <ejb-relationship-role>
  |                 
<ejb-relationship-role-name>orderLine-belongs_to-order</ejb-relationship-role-name>
  |                 <multiplicity>Many</multiplicity>
  |                 <relationship-role-source>
  |                     <ejb-name>OrderLineBean</ejb-name>
  |                 </relationship-role-source>
  |             </ejb-relationship-role>
  |         </ejb-relation>

Does anybody have an idea, I've been looking everywhere and can't find any 
solution.

Thanks in advance

Antonio

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3865218#3865218

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3865218


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to