Dan,
I suggest that you talk to your vendor. The best way of dealing with this
is in the CMP provider.
<vendor>
With Sybase EAServer, you can simply map your 'storeNum' and 'store' cmp and
cmr fields to reference the same column name.
</vendor>
Dan Haywood wrote:
> Hello all - here's a problem that has me stumped.
>
> In EJB 2.0 using CMP and CMR, it seems that for a PK that is composite, with one
>part being a foreign key to a "parent" entity (in other words an identifying primary
>key), gives rise to conflicting requirements on the bean. What's the right approach?
>
> For example, I have parent entity Store with a StorePK consisting of storeNum field,
>and corresponding getStoreNum() / setStoreNum() accessor methods. I also have a child
>entity Receipt, with a ReceiptPK of (storeNum, receiptNum), so that receipts are
>identified by store ((1,1), (1,2) for store #1, (2,1), (2,2) for store #2 and so on).
>The corresponding methods on the ReceiptBean are getStoreNum() / setStoreNum() and
>getReceiptNum() / setReceiptNum().
>
> Now, I want to define a bi-directional CMR between Store and Receipt, which means I
>need a CMR method getStore() for ReceiptBean, returning a StoreLocal.
>
> Putting all this together, it seems the ReceiptBean must provide a getStore() and a
>getStoreNum() method, both of which are implemented by the container. Ditto for the
>setters. This seems horrible - there would be two columns in the underlying RDBMS
>table. Also, it would seem that the onus is on the bean provider to keep these two
>values in sync. In other words, if I create a new Receipt and in the ejbCreate() call
>setStoreNum(), I would also need to do a lookup of StoreLocalHome.findByPrimaryKey()
>to obtain the corresponding StoreLocal, and then call setStore().
>
> The alternative approach would be to define the ReceiptPK to contain a StoreLocal
>reference, rather than a storeNumber value. Then, the methods would be the same and
>would match. This doesn't make the ReceiptPK object transportable by a remote client,
>however, so that feels wrong. Indeed, the EJB spec insists (and the J2EE RI verifier
>checks) that the PK must be a legal type for RMI-IIOP, so other than making the
>StoreLocal reference transient, this looks like it isn't a goer.
>
> Any insights gratefully received...
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff EJB-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
>
>
>
--
_______________________________________________________________________________
Evan Ireland Sybase EAServer Engineering [EMAIL PROTECTED]
Wellington, New Zealand +64 4 934-5856
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".