Thanks for the FYI Andrus.
I'll just punt to a named query for the time being. Thanks for logging in
the JIRA. My concern would be that it would probably be a low-priority
issue (since I'm apparently the only person who has come across this).. to
that end, I'd be more than happy to look into the solution impl, but would
definitely like to have someone to lean on as I dig into the call stack.. if
you or anyone else could point me at some code on the SelectQuery side that
does the entity-by-name lookup correctly, and a general point at the area of
EJBQL that needs work, I can get my hands dirty and help.
Thanks again for the great product and support--
Dave
On Wed, Jun 10, 2009 at 7:37 AM, Andrus Adamchik <andru..bjectstyle.org>wrote:
> From what I can tell, nobody ever looked at this scenario (EJBQL with
> generic entities) yet, so I am not surprised it is broken. Let me log a Jira
> to investigate the issue. Sorry, this also means you'll have to use
> SQLTemplate.
>
> Andrus
>
>
>
> On Jun 10, 2009, at 12:14 AM, Dave Lamy wrote:
>
> Hey guys-- I'm trying to get group functions operational in my
>> Cayenne-backed system. As far as I can tell, the only support for group
>> functions (min, max, count, etc) outside of rolling my own SQL is EJBQL..
>> is
>> that true or am I missing something?
>>
>> Assuming this is the case: I'm having issues with my EJBQL working when I
>> reference a generic Cayenne class. IE, my "Artist" data class doesn't
>> have
>> a strong class implementation.. it just uses a standard base class. This
>> feature has been great and is absolutely essential to our software.
>> However, in my test case I have a simple Artist class with no concrete
>> impl:
>>
>> <obj-entity name="Artist" lock-type="optimistic" dbEntityName="ARTIST"
>> superClassName="com.routeto1.data.DynamicDataObject">
>> <obj-attribute name="address" type="java.lang.String"
>> db-attribute-path="ADDRESS"/>
>> <obj-attribute name="name" type="java.lang.String"
>> db-attribute-path="NAME"/>
>> <obj-attribute name="type" type="java.lang.String"
>> db-attribute-path="TYPE"/>
>> </obj-entity>
>>
>> when I try to execute a simple EJBQL group test query:
>>
>> select count(a), a.name from Artist a group by a.name
>>
>> I get the following exception:
>>
>> org.apache.cayenne.CayenneRuntimeException: [v.3.0M5 Nov 29 2008 21:12:47]
>> Can't perform lookup. There is more than one ObjEntity mapped to
>> com.routeto1.data.impl.DynamicDataObject
>> at
>>
>> org.apache.cayenne.map.EntityResolver._lookupObjEntity(EntityResolver.java:847)
>> at
>>
>> org.apache.cayenne.map.EntityResolver.lookupObjEntity(EntityResolver.java:701)
>> at
>>
>> org.apache.cayenne.query.BaseQueryMetadata.resolve(BaseQueryMetadata.java:99)
>> at
>>
>> org.apache.cayenne.query.SQLTemplateMetadata.resolve(SQLTemplateMetadata.java:47)
>> at
>> org.apache.cayenne.query.SQLTemplate.getMetaData(SQLTemplate.java:157)
>> at
>>
>> org.apache.cayenne.access.jdbc.SQLTemplateAction.<init>(SQLTemplateAction.java:77)
>> at
>>
>> org.apache.cayenne.dba.JdbcActionBuilder.sqlAction(JdbcActionBuilder.java:90)
>> at
>>
>> org.apache.cayenne.access.jdbc.EJBQLAction.performAction(EJBQLAction.java:100)
>> at
>>
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:57)
>> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:236)
>> at
>>
>> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:423)
>> at
>>
>> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:67)
>> ....
>>
>> which seems to read like the EJBQL impl doesn't support the generic base
>> class concept. Am I right on this? I don't care about EJBQL, just want
>> to
>> get group functions working without having to resort to rolling a bunch of
>> dynamic SQL :-). Perhaps an upgrade to M6 is in order? Thanks in advance
>> for any help you can provide!
>>
>> --Dave Lamy
>>
>
>
This archive was generated by hypermail 2.0.0 : Wed Jun 10 2009 - 10:53:41 EDT