Stephen, sadly, I already do have that tag. I did code a workaround, by 
renaming the methods from getAccountObjs to getAccounts. Of course, that's 
cheating really!

Here's the relevant bits of source code for PersonBean:
    /** 
     *  @ejb.interface-method 
     *
     *  @ejb.relation
     *      name="t_account-t_person"
     *      role-name="t_person-has-t_accounts"
     *
     *  @jboss.relation-table
     *      table-name="T_ACCOUNT_PERSON"
     *
     *  @jboss.relation
     *      fk-constraint="true"
     *      fk-column="T_ACCOUNT_ID"
     *      related-pk-field="accountId"
     */
    public abstract Collection getAccounts();

And here's the code from the AccountBean:
    /** 
     *  @ejb.interface-method
     *
     *  @ejb.relation
     *      name="t_account-t_person"
     *      role-name="t_account-has-t_persons"
     *
     *  @jboss.relation-table
     *      table-name="T_ACCOUNT_PERSON"
     *
     *  @jboss.relation
     *      fk-column="T_PERSON_ID"
     *      related-pk-field="personId"
     */
    public abstract Collection getPersonObjs();

Ciao,
Jonathan O'Connor
XCOM Dublin





Stephen Coy <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]
07.08.2003 15:18
Please respond to jboss-user

 
        To:     [EMAIL PROTECTED]
        cc: 
        Subject:        Re: [JBoss-user] JBoss Error in generated SQL for finder 
(Sybase 
restriction)


You need the @jboss.relation-table (0..1) tag associated with the other 
account<->person CMR tags.

Sybase is not alone with this restriction - Oracle has it as well - 32 
character identifiers.

Steve Coy

On Thursday, August 7, 2003, at 09:39  PM, Jonathan.O'[EMAIL PROTECTED] 
wrote:

> 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.findCardsForPersonA 
> ndAccounts]
> (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.findCardsForPersonA 
> ndAccounts]
> (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(SybPreparedStat 
> ement.java:72)
>         at
> org.jboss.resource.adapter.jdbc.local.LocalPreparedStatement.executeQue 
> ry(LocalPreparedStatement.java:289)
>         at
> org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbs 
> tractQueryCommand.java:112)
>         at
> org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.execute(JDBCFind 
> EntitiesCommand.java:40)
>         at
> org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities(JDBCStoreM 
> anager.java:549)
>         at
> org.jboss.ejb.plugins.CMPPersistenceManager.findEntities(CMPPersistence 
> Manager.java:348)
>         at
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEn 
> tities(CachedConnectionInterceptor.java:323)
>         at
> org.jboss.ejb.EntityContainer.findLocal(EntityContainer.java:612)
>         at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso 
> rImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at
> org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityCon 
> tainer.java:1119)
>         at
> org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercepto 
> r.java:73)
>         at
> org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(Entit 
> ySynchronizationInterceptor.java:207)
>         at
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke 
> Home(CachedConnectionInterceptor.java:215)
>         at
> org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercepto 
> r.java:73)
>         at
> org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstan 
> ceInterceptor.java:90)
>         at
> org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterc 
> eptor.java:79)
>         at
> org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreati 
> onInterceptor.java:44)
>         at
> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterc 
> eptor.java:111)
>         at
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercepto 
> rCMT.java:228)
>         at
> org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java 
> :62)
>         at
> org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityIntercepto 
> r.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(BaseLo 
> calContainerInvoker.java:230)
>         at
> org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:1 
> 10)
>         at $Proxy115.findCardsForPersonAndAccounts(Unknown Source)
>         at
> xcom.traxbahn.bproc.tasks.CardBcTasks.findCardsForPersonAndAccounts(Car 
> dBcTasks.java:318)
>         at
> xcom.traxbahn.bproc.ejb.PersonAddressBcBean.getAddressCompositeDTOsForP 
> erson(PersonAddressBcBean.java:511)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja 
> va:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso 
> rImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at
> org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Sta 
> telessSessionContainer.java:660)
>         at
> org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke 
> (CachedConnectionInterceptor.java:186)
>         at
> org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statel 
> essSessionInstanceInterceptor.java:77)
>         at
> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterc 
> eptor.java:107)
>         at
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercepto 
> rCMT.java:228)
>         at
> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:92)
>         at
> org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.ja 
> va:130)
>         at
> org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
>         at
> org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContaine 
> r.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:38 
> 2)
>         at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso 
> rImpl.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.j 
> ava: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



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





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

Reply via email to