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

On Apr 23, 2009, at 4/238:53 PM , Aristedes Maniatis wrote:


On 24/04/2009, at 9:53 AM, Robert Zeigler wrote:

I expected the Entry subclass of _Entry, and superclass of the other two concrete classes to be abstract. Instead, only the cayenne-"managed" superclass was abstract. It seems like there's very little point to that: nobody is going to try to directly instantiate _Entry, anyway. And I can't put abstract methods that subclasses should implement into _Entry, since they'll be lost on class regeneration. I guess it's a matter of expectations: by checking "isabstract", I expect cayenne to treat that object entity as abstract... and not try to instantiate it. :)

Is this fix as simple as changing the DOtemplate for the subclass? Now I understand your point and I think you are right that it is broken, but the fix should be one line in the template.

To some degree it might make sense for the _Entry superclass to be abstract always to avoid people shooting themselves in the foot and using the wrong class by mistake.

Ari



-------------------------->
ish
http://www.ish.com.au
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001   fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A



Reply via email to