Hello, Aaron

seems that my "workaround" failed. As soon as a relation column is used
within a finder ejbQL TranQL gives up ... or better said: it seems that
it gives up. Here a nice stack trace that emphasizes my problem:

Caused by: org.tranql.ql.QueryException: Finder [Finder
method=[findAll]; EJB-QL=[select distinct object(g) from Guild as g, in
(g.realm) as r order by g.guildName asc, r.realmName asc]]
        at
org.tranql.sql.EJBQLToPhysicalQuery.buildFinder(EJBQLToPhysicalQuery.java:143)
        at
org.tranql.sql.EJBQLToPhysicalQuery.buildFinders(EJBQLToPhysicalQuery.java:90)
        ... 36 more
Caused by: org.tranql.ql.QueryException: Parser, lexer or Tree-walker
exception
        at
org.tranql.sql.EJBQLToPhysicalQuery.getEJBQLQuery(EJBQLToPhysicalQuery.java:235)
        at
org.tranql.sql.EJBQLToPhysicalQuery.buildFinder(EJBQLToPhysicalQuery.java:130)
        ... 37 more
Caused by: org.tranql.ql.MalformedNodeException: Path used must end with
a multi valued CMR field
        at org.tranql.ql.DerivedTable.getEntityType(DerivedTable.java:61)
        at org.tranql.ql.DerivedTable.<init>(DerivedTable.java:36)
        at
org.tranql.ejb.parser.EJBQL21Compiler.collection_member_declaration(EJBQL21Compiler.java:473)
        at
org.tranql.ejb.parser.EJBQL21Compiler.from_clause(EJBQL21Compiler.java:201)
        at
org.tranql.ejb.parser.EJBQL21Compiler.ejbql(EJBQL21Compiler.java:115)
        at
org.tranql.sql.EJBQLToPhysicalQuery.getEJBQLQuery(EJBQLToPhysicalQuery.java:233)
        ... 38 more

So, it is a TranQL problem? Should I post this to the TranQL ML?

Oh, before I forgot:

Guild n:1 Realm

(1 Realm can have multiple guilds, but 1 guild can only belong to 1
Realm, so 1:n relation).

My openejb-jar.xml for the relation looks like:

<ejb-relation>
        <ejb-relation-name>relGuildRealm</ejb-relation-name>
        <ejb-relationship-role>
                <ejb-relationship-role-name>
                        r1
                </ejb-relationship-role-name>
                <relationship-role-source>
                        <ejb-name>Guild</ejb-name>
                </relationship-role-source>
                <cmr-field>
                        <cmr-field-name>realm</cmr-field-name>
                </cmr-field>
                <foreign-key-column-on-source />
                <role-mapping>
                        <cmr-field-mapping>
                                <key-column>id</key-column>
                                <foreign-key-column>
                                        refrealm
                                </foreign-key-column>
                        </cmr-field-mapping>
                </role-mapping>
        </ejb-relationship-role>
</ejb-relation>

Let me know if you need more information.

Best regards

Dirk

Aaron Mulder schrieb:
> My guess would be that r.partei refers to a single entity (as in a
> 1-to-1 relationship between r and p) but the "in" operator expects its
> argument to be a group or set (as in a 1-to-many) relationship.  Does
> that sound right?
> 
> Thanks,
>    Aaron
> 
> On 7/7/06, D. Strauss <[EMAIL PROTECTED]> wrote:
>> Hello, ejbQL profs ^^
>>
>> seems that I missunderstood my ejbQL knowledge. I setup some ejbs and
>> wanted to create some finder methods (ejb-jar.xml). Unfortunately,
>> Geronimo (or OpenEJB?) ends in an exception that I can't figure out what
>> it wants to tell me.
>>
>>
>>
>> Caused by: org.tranql.ql.QueryException: Finder [Finder
>> method=[findAll]; EJB-QL=[select distinct object(r) from Rasse as r, in
>> (r.partei) as p order by p.parteiName asc,r.rassenName asc]]
>>         at
>> org.tranql.sql.EJBQLToPhysicalQuery.buildFinder(EJBQLToPhysicalQuery.java:143)
>>
>>         at
>> org.tranql.sql.EJBQLToPhysicalQuery.buildFinders(EJBQLToPhysicalQuery.java:90)
>>
>>         ... 36 more
>> Caused by: org.tranql.ql.QueryException: Parser, lexer or Tree-walker
>> exception
>>         at
>> org.tranql.sql.EJBQLToPhysicalQuery.getEJBQLQuery(EJBQLToPhysicalQuery.java:235)
>>
>>         at
>> org.tranql.sql.EJBQLToPhysicalQuery.buildFinder(EJBQLToPhysicalQuery.java:130)
>>
>>         ... 37 more
>> Caused by: org.tranql.ql.MalformedNodeException: Path used must end with
>> a multi valued CMR field
>>         at org.tranql.ql.DerivedTable.getEntityType(DerivedTable.java:61)
>>         at org.tranql.ql.DerivedTable.<init>(DerivedTable.java:36)
>>         at
>> org.tranql.ejb.parser.EJBQL21Compiler.collection_member_declaration(EJBQL21Compiler.java:473)
>>
>>         at
>> org.tranql.ejb.parser.EJBQL21Compiler.from_clause(EJBQL21Compiler.java:201)
>>
>>         at
>> org.tranql.ejb.parser.EJBQL21Compiler.ejbql(EJBQL21Compiler.java:115)
>>         at
>> org.tranql.sql.EJBQLToPhysicalQuery.getEJBQLQuery(EJBQLToPhysicalQuery.java:233)
>>
>>         ... 38 more
>>
>>
>> So, basically, the ejbQL
>>         select distinct object(r) from Rasse as r, in (r.partei) as p
>> order by
>> p.parteiName asc,r.rassenName asc
>> is wrong. However, the ejbQL
>>         select distinct object(r) from Rasse as r order by
>> r.rassenName asc
>> works.
>>
>> Does anyone know what "Path used must end with a multi valued CMR field"
>> mean?
>>
>> Or is this somehow related to the prefetch system by Geronimo?
>>
>> Best regards
>>
>> Dirk
>>
> 
> 

Reply via email to