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

Reply via email to