Hello Russell, could you provide a testcase or detailed info on how I can reproduce it?
Thanks, alex Thursday, June 12, 2003, 11:27:31 PM, Russell Chan wrote: RC> Hmmm.. RC> I just tried the same code on jboss-3.2.1 and the new 3.2.2rc1 RC> The code was functional, ableit not what I want for 3.2.1. RC> The same ear file deployed into 3.2.2rc1 blew up. RC> I'd file a bug, but I'm still not certain that I haven't coded up RC> something wrong (I'm still new at the relations stuff), and it's not RC> jboss' fault. RC> So, I'll try to include some more code samples and debugging output RC> here. Once again, I'm using xdoclet-1.2b, so you'll see those tags RC> here. I'll also only include the relevant columns... RC> TransactionRef is the foreign key which maps to another bean Transaction RC> whose primary key is transactionRef. RC> EventQueueBean.java: RC> Accessor for the foreign key field: RC> ============================================================================== RC> /** RC> * getTransactionRef - get TRANSACTION_REF RC> * RC> * @ejb.interface-method RC> * RC> * @ejb.transaction type="NotSupported" RC> * @ejb.persistence column-name "TRANSACTION_REF" RC> * @jboss.method-attributes read-only="true" RC> * @ejb.value-object RC> * match="Default" RC> */ RC> public abstract java.lang.String getTransactionRef (); RC> /** RC> * setTransactionRef - set TRANSACTION_REF RC> * RC> * @ejb.interface-method RC> * @ejb.value-object RC> * match="Default" RC> */ RC> public abstract void setTransactionRef ( java.lang.String aValue RC> ); RC> ============================================================================== RC> Accessor for the foreign key cmr. RC> /** RC> * @ejb.interface-method view-type="local" RC> * @ejb.transaction type="Required" RC> * RC> * @ejb.value-object RC> * match="Tree" RC> * RC> aggregate="com.navahonetworks.interfaces.entity.TransactionValue" RC> * aggregate-name="TransactionValue" RC> * RC> members="com.navahonetworks.interfaces.entity.TransactionValue" RC> * members-name="TransactionValue" RC> * relation="external" RC> * RC> * @ejb.relation RC> * name="EventQueue-Transaction" RC> * role-name="EventQueue-has-a-Transaction" RC> * cascade-delete="false" RC> * target-ejb="Transaction" RC> * target-role-name="Transaction-has-an-EventQueue" RC> * target-multiple="no" RC> * RC> * RC> * @jboss.relation RC> * fk-column="TRANSACTION_REF" RC> * related-pk-field="transactionRef" RC> * RC> * RC> * @jboss.method-attributes read-only="true" RC> * RC> */ RC> public abstract RC> com.navahonetworks.interfaces.entity.TransactionLocal getTransaction(); RC> /** RC> * @ejb.interface-method view-type="local" RC> * @ejb.transaction type="Required" RC> */ RC> public abstract void RC> setTransaction(com.navahonetworks.interfaces.entity.TransactionLocal RC> transaction); RC> ============================================================================== RC> Relevant portion of jbosscmp-jdbc.xml: RC> <ejb-relation> RC> <ejb-relation-name>EventQueue-Transaction</ejb-relation-name> RC> <foreign-key-mapping/> RC> <ejb-relationship-role> RC> <ejb-relationship-role-name>EventQueue-has-a-Transaction</ejb-relationship-role-name> RC> <key-fields/> RC> </ejb-relationship-role> RC> <ejb-relationship-role> RC> <ejb-relationship-role-name>Transaction-has-EventQueues</ejb-relationship-role-name> RC> <key-fields> RC> <key-field> RC> <field-name>transactionRef</field-name> RC> <column-name>TRANSACTION_REF</column-name> RC> </key-field> RC> </key-fields> RC> </ejb-relationship-role> RC> </ejb-relation> RC> ============================================================================== RC> On Jboss 3.2.1: RC> Here's the query being executed by jboss cmp on the ejbLoad. Note that RC> TRANSACTION_REF appears twice... once for the cmr-field, and once for RC> the cmp-field. RC> 2003-06-12 16:17:53,522 DEBUG RC> [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.EventQueue] RC> Executing SQL: SELECT EVENT_QUEUE_ID,EVENT_QUEUE_GUID, ENTRY_DATE, RC> EVENT_TYPE, STATE, TRANSACTION_REF, ATTEMPTS, NEXT_ATTEMPT, PRIORITY, RC> LOCKED, EVENT_DETAILS, VENDOR_ID, VENDOR_ID, TRANSACTION_REF FROM RC> OFFNET.EVENT_QUEUE WHERE (EVENT_QUEUE_ID=?) OR (EVENT_QUEUE_ID=?) OR RC> (EVENT_QUEUE_ID=?) RC> This isn't exactly what I want - I'd rather see just one RC> "TRANSACTION_REF" show here, but it appears to work. (I'm worried about RC> what an ejbStore would do - would it try to set it twice? I'll have to RC> check that). RC> ============================================================================== RC> On Jboss 3.2.2-RC1: RC> The exact same client and ejbs as above blows up with the following RC> trace (sorry about the linewraps). I note that the query still asks for RC> TRANSACTION_REF twice. There's quite a bit more stack trace if that RC> helps anyone. RC> 2003-06-12 16:04:56,406 DEBUG RC> [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.EventQueue] RC> Executing SQL: SELECT EVENT_QUEUE_GUID, ENTRY_DATE, EVENT_TYPE, STATE, RC> TRANSACTION_REF, ATTEMPTS, NEXT_ATTEMPT, PRIORITY, LOCKED, RC> EVENT_DETAILS, VENDOR_ID, TRANSACTION_REF, VENDOR_ID FROM RC> OFFNET.EVENT_QUEUE WHERE (EVENT_QUEUE_ID=?) RC> 2003-06-12 16:04:56,406 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.eventQueueId] Set parameter: index=1, jdbcType=INTEGER, value=4803 RC> 2003-06-12 16:04:56,414 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.eventQueueGuid] Get result: index=1, javaType=java.lang.String, Simple, value=null RC> 2003-06-12 16:04:56,415 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.entryDate] Get result: index=2, javaType=java.sql.Timestamp, Simple, value=2003-06-10 11:30:22.0 RC> 2003-06-12 16:04:56,415 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.eventType] Get result: index=3, javaType=java.lang.Integer, Simple, value=202003-06-12 16:04:56,415 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.state] Get result: index=4, javaType=java.lang.Integer, Simple, value=0 RC> 2003-06-12 16:04:56,415 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.transactionRef] Get result: index=5, javaType=java.lang.String, Simple, value=BBBBBBBBBYB3 RC> 2003-06-12 16:04:56,415 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.attempts] Get result: index=6, javaType=java.lang.Integer, Simple, value=2382003-06-12 16:04:56,416 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.nextAttempt] Get result: index=7, javaType=java.sql.Timestamp, Simple, value=2003-06-12 16:16:09.0 RC> 2003-06-12 16:04:56,416 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.priority] Get result: index=8, javaType=java.lang.Integer, Simple, value=0 RC> 2003-06-12 16:04:56,416 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.locked] Get result: index=9, javaType=java.lang.String, Simple, value=N RC> 2003-06-12 16:04:56,416 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.eventDetails] Get result: index=10, javaType=java.lang.String, Simple, RC> value=<event><post><url>aHR0cHM6Ly9hcHB0ZXN0Lm5hdmFob25ldHdvcmtzLmNvbS9uYXZhaG8vU2VsZWN0RGlhbGVy</url><nvpair><param_name>U1RBVEU=</param_name><param_value>QUJBTkRPTkVE</param_value></nvpair><nvpair><param_name>VFJBTlNBQ1RJT05fSUQ=</param_name><param_value>Mzc4NTU5OQ==</param_value></nvpair><nvpair><param_name>VFJBTlNBQ1RJT05fUkVG</param_name><param_value>QkJCQkJCQkJCWUIz</param_value></nvpair><nvpair><param_name>SU5WT0lDRV9OTw==</param_name><param_value>MTA1NTI1ODM0MTc2OQ==</param_value></nvpair><nvpair><param_name>Q09NUExFVElPTl9EQVRF</param_name><param_value>MjAwMzA2MTAxNjEwNTY=</param_value></nvpair><nvpair><param_name>U0lURV9VU0VSTkFNRQ==</param_name><param_value>dXNlcg==</param_value></nvpair><nvpair><param_name>U0lURV9QQVNTV09SRA==</param_name><param_value>cGFzcw==</param_value></nvpair><nvpair><param_name>VkVORE9SX0lE</param_name><param_value>MQ==</param_value></nvpair><nvpair><param_name>VkVORE9SX0FNT1VOVA==</param_name><param_value>MTUuMDA=</param_value></nvpai! r><nvpair><param_name>VkVORE9SX0NVUlJFTkNZX0lE</param_name><param_value>MQ==</param_value></nvpair><nvpair><param_name>VkVORE9SX0NVUlJFTkNZX1NZTQ==</param_name><param_value>Q0FE</param_value></nvpair><nvpair><param_name>U0hPUFBFUl9BTU9VTlQ=</param_name><param_value>MA==</param_value></nvpair><nvpair><param_name>U0hPUFBFUl9DVVJSRU5DWV9JRA==</param_name><param_value>MQ==</param_value></nvpair><nvpair><param_name>U0hPUFBFUl9DVVJSRU5DWV9TWU0=</param_name><param_value>Q0FE</param_value></nvpair></post></event> RC> 2003-06-12 16:04:56,417 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.vendorId] Get result: index=11, javaType=java.lang.Integer, Simple, value=1 RC> 2003-06-12 16:04:56,417 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.transactionRef] Get result: index=12, javaType=java.lang.String, Simple, value=BBBBBBBBBYB3 RC> 2003-06-12 16:04:56,417 TRACE RC> [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.EventQueue.vendorId] Get result: index=13, javaType=java.lang.Integer, Simple, value=1 RC> 2003-06-12 16:04:56,425 ERROR [org.jboss.ejb.plugins.LogInterceptor] RC> TransactionRolledbackLocalException, causedBy: RC> javax.ejb.EJBException: Error in getRelatedId; CausedByException is: RC> null RC> at RC> org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getRelatedEntityByFK(JDBCCMRFieldBridge.java:650) RC> at RC> org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getInstanceValue(JDBCCMRFieldBridge.java:572) RC> at RC> org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getValue(JDBCCMRFieldBridge.java:517) RC> at RC> org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:124) RC> at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:59) RC> at RC> com.navahonetworks.ejb.entity.EventQueueCMP$Proxy.getTransaction(<generated>) RC> at RC> com.navahonetworks.ejb.entity.EventQueueCMP.getEventQueueTreeValue(EventQueueCMP.java:94) RC> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) RC> at RC> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) RC> at RC> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) RC> at java.lang.reflect.Method.invoke(Method.java:324) RC> at RC> org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1059) RC> at RC> org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:95) RC> at RC> org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:301) RC> at RC> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186) RC> at RC> org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:82) RC> at RC> org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:174) RC> at RC> org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:89) RC> at RC> org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:53) RC> at RC> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84) RC> at RC> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243) RC> at RC> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104) RC> at RC> org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117) RC> On Thu, 2003-06-12 at 12:27, Alexey Loubyansky wrote: >> Hello Russell, >> >> it should work properly. Try to upgrade your JBoss version. If the >> issue is still there then submit a bug report. >> >> alex >> >> Thursday, June 12, 2003, 5:29:05 PM, Russell Chan wrote: >> >> RC> Hi, >> >> RC> I'm trying to find out if I can have a CMP EJB with a cmp-field >> RC> accessors and cmr-field accessors mapping to the same database >> RC> column/foreign key. >> >> RC> I'm using jboss-3.2.1 with cmp2 (and xdoclet-1.2b) >> >> RC> In my case, the actual foreign key is enough for some circumstances, and >> RC> I don't want to trigger off another database read just to get the >> RC> foreign key that's already in the table and that the cmp engine should >> RC> already know about. >> >> RC> Having traced through the sql being generated, if I include accessors on >> RC> the column as cmp-fields and a cmr-relation on the same field, the CMP >> RC> engine appears to be including the column twice in the generated sql. >> RC> I'm also worried about the effect this will have on updates/inserts. >> >> RC> Is there any way to properly do this in jboss-3.2.1? >> >> RC> I've searched through the archives, and noticed a couple of people >> RC> asking this same question. The answer at the time was "not yet >> RC> supported, but soon", but that was way back in December 2002. >> >> RC> Thanks, >> RC> Russ ------------------------------------------------------- This SF.NET email is sponsored by: eBay Great deals on office technology -- on eBay now! Click here: http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5 _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user