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".

Reply via email to