Well, finally I've hit upon a real JBoss problem (we're using JBoss 3.0.6
with Sybase 12.0 and the JDBC driver is JConnect2 version 5.5).
We have a finder on one of our entity beans. It's declared as such:
* @ejb.finder
* signature="java.util.Collection findCardsForPersonAndAccounts(java.lang.Long
personId)"
* result-type-mapping="Local"
* method-intf="LocalHome"
* query="SELECT DISTINCT OBJECT(c) FROM T_Card c, T_Person p, IN (p.accountObjs)
accounts WHERE c.cardHolder.personId=?1 OR (p.personId=?1 AND c MEMBER OF
accounts.cardObjs)"
*
A T_Card has one T_Person who is the card holder. An account can have many
cards, and a person can have many accounts. The problem is SQL generated
needs a name for the account-person relationship and it generates this
very long name "t5_p_accountObjs_RELATION_TABLE", which Sybase does not like.
2003-08-07 11:46:42,900 4344667 DEBUG
[org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Card.findCardsForPersonAndAccounts]
(RMI TCP Connection(12)-10.100.1.22:Card) Executing SQL: SELECT DISTINCT
t0_c.T_CARD_ID FROM T_CARD t0_c, T_PERSON t2_p, T_ACCOUNT t3_accounts,
T_ACCOUNT_PERSON t5_p_accountObjs_RELATION_TABLE, T_PERSON t1_c_cardHolder
WHERE (t1_c_cardHolder.T_PERSON_ID = ? OR (t2_p.T_PERSON_ID = ? AND EXISTS
(SELECT t4_accounts_cardObjs.T_CARD_ID FROM T_CARD t4_accounts_cardObjs
WHERE t3_accounts.T_ACCOUNT_ID=t4_accounts_cardObjs.T_ACCOUNT_ID AND
t4_accounts_cardObjs.T_CARD_ID = t0_c.T_CARD_ID))) AND
(t0_c.T_PERSON_ID=t1_c_cardHolder.T_PERSON_ID AND
t2_p.T_PERSON_ID=t5_p_accountObjs_RELATION_TABLE.T_PERSON_ID AND
t3_accounts.T_ACCOUNT_ID=t5_p_accountObjs_RELATION_TABLE.T_ACCOUNT_ID)
2003-08-07 11:46:42,940 4344707 DEBUG
[org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.Card.findCardsForPersonAndAccounts]
(RMI TCP Connection(12)-10.100.1.22:Card) Find failed
com.sybase.jdbc2.jdbc.SybSQLException: The identifier that starts with
't5_p_accountObjs_RELATION_TABL' is too long. Maximum length is 30.
at com.sybase.jdbc2.tds.Tds.processEed(Tds.java:2672)
at com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:2032)
at
com.sybase.jdbc2.jdbc.ResultGetter.nextResult(ResultGetter.java:69)
at
com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:204)
at
com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:187)
at
com.sybase.jdbc2.jdbc.SybStatement.queryLoop(SybStatement.java:1537)
at
com.sybase.jdbc2.jdbc.SybStatement.executeQuery(SybStatement.java:1522)
at
com.sybase.jdbc2.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement.java:72)
at
org.jboss.resource.adapter.jdbc.local.LocalPreparedStatement.executeQuery(LocalPreparedStatement.java:289)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:112)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.execute(JDBCFindEntitiesCommand.java:40)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities(JDBCStoreManager.java:549)
at
org.jboss.ejb.plugins.CMPPersistenceManager.findEntities(CMPPersistenceManager.java:348)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEntities(CachedConnectionInterceptor.java:323)
at
org.jboss.ejb.EntityContainer.findLocal(EntityContainer.java:612)
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1119)
at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73)
at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:207)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:215)
at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73)
at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:90)
at
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:79)
at
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:44)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:111)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:228)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:62)
at
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:105)
at
org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:129)
at
org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:487)
at
org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.invokeHome(BaseLocalContainerInvoker.java:230)
at
org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
at $Proxy115.findCardsForPersonAndAccounts(Unknown Source)
at
xcom.traxbahn.bproc.tasks.CardBcTasks.findCardsForPersonAndAccounts(CardBcTasks.java:318)
at
xcom.traxbahn.bproc.ejb.PersonAddressBcBean.getAddressCompositeDTOsForPerson(PersonAddressBcBean.java:511)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:228)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:92)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
at org.jboss.ejb.Container.invoke(Container.java:712)
at
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:382)
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:536)
Ciao,
Jonathan O'Connor
XCOM Dublin
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user