You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Matt Hogstrom (JIRA)" <de...@geronimo.apache.org> on 2005/06/14 16:32:47 UTC
[jira] Created: (GERONIMO-675) CMR / CMP Fields should not be read-only
CMR / CMP Fields should not be read-only
----------------------------------------
Key: GERONIMO-675
URL: http://issues.apache.org/jira/browse/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(ReadOnlyCMPFieldAccessor.java:44)
>> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
>> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
>>
>>
> 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, etc.
>>
>>
> 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Closed: (GERONIMO-675) CMR / CMP Fields should not be read-only
Posted by "Aaron Mulder (JIRA)" <de...@geronimo.apache.org>.
[ http://issues.apache.org/jira/browse/GERONIMO-675?page=all ]
Aaron Mulder closed GERONIMO-675:
---------------------------------
Resolution: Fixed
Closed as the tests were successful
> CMR / CMP Fields should not be read-only
> ----------------------------------------
>
> Key: GERONIMO-675
> URL: http://issues.apache.org/jira/browse/GERONIMO-675
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M4
> Environment: Windows
> Reporter: Matt Hogstrom
> Assignee: Gianny Damour
> Fix For: 1.0-M5
>
> > 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(ReadOnlyCMPFieldAccessor.java:44)
> >> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
> >> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
> >>
> >>
> > 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, etc.
> >>
> >>
> > 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (GERONIMO-675) CMR / CMP Fields should not be read-only
Posted by "Matt Hogstrom (JIRA)" <de...@geronimo.apache.org>.
[ http://issues.apache.org/jira/browse/GERONIMO-675?page=comments#action_12320239 ]
Matt Hogstrom commented on GERONIMO-675:
----------------------------------------
I have tested the area where the failure occurred and we can now update cmr / cmp fields.
Whew !
> CMR / CMP Fields should not be read-only
> ----------------------------------------
>
> Key: GERONIMO-675
> URL: http://issues.apache.org/jira/browse/GERONIMO-675
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M4
> Environment: Windows
> Reporter: Matt Hogstrom
> Assignee: Gianny Damour
> Fix For: 1.0-M5
>
> > 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(ReadOnlyCMPFieldAccessor.java:44)
> >> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
> >> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
> >>
> >>
> > 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, etc.
> >>
> >>
> > 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Updated: (GERONIMO-675) CMR / CMP Fields should not be read-only
Posted by "Aaron Mulder (JIRA)" <de...@geronimo.apache.org>.
[ http://issues.apache.org/jira/browse/GERONIMO-675?page=all ]
Aaron Mulder updated GERONIMO-675:
----------------------------------
Fix Version: 1.0-M5
(was: 1.0)
This is believed to be fixed. Matt will confirm.
> CMR / CMP Fields should not be read-only
> ----------------------------------------
>
> Key: GERONIMO-675
> URL: http://issues.apache.org/jira/browse/GERONIMO-675
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M4
> Environment: Windows
> Reporter: Matt Hogstrom
> Assignee: Gianny Damour
> Fix For: 1.0-M5
>
> > 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(ReadOnlyCMPFieldAccessor.java:44)
> >> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
> >> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
> >>
> >>
> > 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, etc.
> >>
> >>
> > 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Assigned: (GERONIMO-675) CMR / CMP Fields should not be read-only
Posted by "Gianny Damour (JIRA)" <de...@geronimo.apache.org>.
[ http://issues.apache.org/jira/browse/GERONIMO-675?page=all ]
Gianny Damour reassigned GERONIMO-675:
--------------------------------------
Assign To: Gianny Damour
> CMR / CMP Fields should not be read-only
> ----------------------------------------
>
> Key: GERONIMO-675
> URL: http://issues.apache.org/jira/browse/GERONIMO-675
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M4
> Environment: Windows
> Reporter: Matt Hogstrom
> Assignee: Gianny Damour
>
> > 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(ReadOnlyCMPFieldAccessor.java:44)
> >> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
> >> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
> >>
> >>
> > 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, etc.
> >>
> >>
> > 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Updated: (GERONIMO-675) CMR / CMP Fields should not be read-only
Posted by "Aaron Mulder (JIRA)" <de...@geronimo.apache.org>.
[ http://issues.apache.org/jira/browse/GERONIMO-675?page=all ]
Aaron Mulder updated GERONIMO-675:
----------------------------------
Fix Version: 1.0
> CMR / CMP Fields should not be read-only
> ----------------------------------------
>
> Key: GERONIMO-675
> URL: http://issues.apache.org/jira/browse/GERONIMO-675
> Project: Geronimo
> Type: Bug
> Components: OpenEJB
> Versions: 1.0-M4
> Environment: Windows
> Reporter: Matt Hogstrom
> Assignee: Gianny Damour
> Fix For: 1.0
>
> > 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(ReadOnlyCMPFieldAccessor.java:44)
> >> at org.openejb.entity.cmp.CMPSetter.invokeInstance(CMPSetter.java:74)
> >> at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodInterceptor.java:75)
> >>
> >>
> > 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, etc.
> >>
> >>
> > 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:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira