that raises the question of whether we support enum-mapped
properties as the discriminators, and if so, what's the proper
syntax for specifying the enum constant in the qualifier field?
We should. This comes down to adding enum literals support in the
"exp" package. Maybe:
xyz = org.example.EnumClass.ENUM_NAME
This is also seems to be the JPA (EJBQL) syntax for enum literals.
Andrus
On Apr 24, 2009, at 9:51 AM, Robert Zeigler wrote:
This was with a SelectQuery already.
Just verified that you're right: this is a problem with my qualifiers.
The column type is varchar. I was trying to map the object property
as an enum. But I wasn't sure how to specify the qualifier, so I
tried as:
entryType = 'ENUM_CONST_NAME'
Which failed. When I changed the java type of entryType to string,
cayenne properly instantiated the subclasses.
So I suppose that raises the question of whether we support enum-
mapped properties as the discriminators, and if so, what's the
proper syntax for specifying the enum constant in the qualifier field?
Robert
On Apr 24, 2009, at 4/241:23 AM , Andrus Adamchik wrote:
On Apr 24, 2009, at 5:35 AM, Robert Zeigler wrote:
No, it's a bit more complicated. The template is one portion of
the fix, but even if the entity is marked abstract (in both the
mapping and the java class), cayenne will try to instantiate it in
the aforementioned query on superclass case. So a complete
solution will require that case to resolve and instantiate the
subclass types, rather than attempting to instantiate the
superclass type.
Robert
Hi Robert,
The whole logic for instantiating an object of a given class is
based on the combination of entity qualifiers in the hierarchy
(including on the base class). So unless this is a bug specific to
EJBQLQuery (could you try the same thing with SelectQuery?), maybe
the condition on a given result set row yielded a base class somehow?
Could you post the stack trace and entity qualifiers?
Thanks,
Andrus