geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Hogstrom (JIRA)" <>
Subject [jira] Created: (GERONIMO-675) CMR / CMP Fields should not be read-only
Date Tue, 14 Jun 2005 14:32:47 GMT
CMR / CMP Fields should not be read-only

         Key: GERONIMO-675
     Project: Geronimo
        Type: Bug
  Components: OpenEJB  
    Versions: 1.0-M4    
 Environment: Windows
    Reporter: Matt Hogstrom

> On 14/06/2005 12:42 PM, Matt Hogstrom wrote:
>>I have a typical bean sequence where there is an Order and a number of Order Lines.
 (1 ... many)  The OrderEnt is created from a Session bean coincidentally named OrderSes.
 The OrderEnt then in ejbPostCreate creates the appropriate OrderLines.  Here is the code
from OrderEnt:
>>    public void ejbPostCreate(OrderDataBean odb, boolean deferred) 
>>    throws CreateException {
> <snip>
>>Depending on the situation one of the above orderLineHome.create methods is invoked.
 So far, so good.
>>In the OrderLineEnt.create method things go a bit wrong. Here is the stack trace:
>>Caused by: javax.ejb.EJBException: cmp-field [orderId] is read-only.
>>        at org.tranql.ejb.ReadOnlyCMPFieldAccessor.set(
>>        at org.openejb.entity.cmp.CMPSetter.invokeInstance(
>>        at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(
> Based on this stack-trace, I confirm that the CMP field orderId is 
> mapped to a foreign key.
>>Here is the ejbCreate method that is failing
>>     public OrderLineEntPK ejbCreate(int id, Integer orderId, String itemId, int quantity,
BigDecimal totalValue, 
>>              int olineStatus, java.sql.Date shipDate, BigDecimal msrp) throws CreateException
>>        if( debugging )
>>            debug.println(3, "ejbCreate of ol_id = " + id + ", o_id = "
>>                          + orderId);
>>        setId(id);
>>        setOrderId(orderId);                          <==================== This
is the line that is failing.
>>        setItemId(itemId);
>>        setQuantity(quantity);
>>        setTotalValue(totalValue.setScale(2, BigDecimal.ROUND_UP));
>>        setOlineStatus(olineStatus);
>>OrderId is the FK to the Order.  
> Fields mapped to foreign key columns are read-only. They are read-only 
> for the following reason:
> Let's assume that:
> * we have one existing line item lineItemEntity;
> * lineItemEntity is already related to an order orderEntity;
> * orderEntity is related to two line items, lineItemEntity (as expected) 
> and lineItemEntity2;
> * we want to relate lineItemEntity to a new order orderEntity2;
> * orderEntity2 is related to zero line items; and
> * line item defines a CMR field order to set its related order.
> In this specific scenario, if we set the CMR field order of 
> lineItemEntity to orderEntity2, then:
> * orderEntity2 is now related to the line item lineItemEntity; and
> * orderEntity is now related to only one line item lineItemEntity2.
> In this same scenario, if we set the CMP field orderId of lineItemEntity 
> to the primary key of orderEntity2, then I am not sure of what the 
> result should be. Indeed, it is a CMP field and no specfic semantic is 
> attached to it.
> To some extent, I am not sure that we should allow developers to update 
> relationships via a direct update to the underlying foreign key columns. 
> We could implement a fix to have a CMR semantic for CMP fields mapped to 
> foreign ley columns; yet it does not sound good. Having said that, I do 
> not have a strong opinion and I am happy to support such a scenario, if 
> we need to.
> Also, it is worth to notice that such a potential fix will only be able 
> to handle CMP having simple primary keys. CMP having compound primary 
> keys will still have a read-only approach.
>>First question is the deployment right for this scenario?  If it is, then I think
that the container is not acting correctly.  This code runs on WebLogic, Sun One, WebSphere,
> Do you know if they properly support such scenarii (the CMP field must 
> have a CMR semantic)? Also, do you know if they do not allow such 
> scenarii in the case of compound PK CMP?
> Thanks,
> Gianny

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message