> > This would sound cool to me too, but from the Cayenne
> documentation example, this approach seems to have the
> problem that Java has single inheritance :(.
> > 
> > If there's only one such table than it would work
> (single inheritance).
> > E.g. In the above example, by doing a superclass to
> point to the "tag" table(Tag entity), called "Taggable". All
> entities that would like to have "tag"s would just need to
> extend the "Taggable" entity.
> > 
> > The big problem is how to do it if there are more
> tables like that in the scheme :(.
> 
> Yes, you get to have exactly one Tag concept since you can
> have only one superclass. Otherwise you have to model this
> as an interface, but there is no support for that in
> Cayenne. 
This would have been my first choice too, but I saw no support in Cayenne 
Modeler for entering additional interfaces - only one super class :(.

> >> Choice 2:
> >> Just do exactly what you are doing and fake the
> >> relationships. Subclass CayenneContext so that you
> can
> >> create the appropriate setters and getters to make
> this all
> >> work. We do this ourselves and I might be able to
> dig up
> >> some code if you get stuck.
> > Are there any examples about this around?
> 
> You could download the onCourse server from our website
> (www.ish.com.au/oncourse) and open it up. 
This looks like a very nice application :).

(I haven't seen too many cayenne based applications since
some of the links from http://cayenne.apache.org/success-stories.html
don't work or they don't point to a download-able application :( )

> Inside there you'll
> find our Cayenne model for the application (use version 3
> modeler to look at it). And in there, some tables called
> Node and NodeRelation are of interest to you. In the
> application itself, we use this to display 'Tags' attached
> to lots of different entities: courses, students, etc.
> 
> Here's a snippet of code which then let's you find the
> related records. In this Taggable is the interface, Node the
> "Tag" entity and NodeRelation the join to other entities.
Interesting idea.

Thank you very much for the detailed example.
I'll try to model like you describe.

Joseph.


      

Reply via email to