> That said, the warning was pointing to the Entry entity, but I think the bad 
> mapping was in the User entity. Maybe it's a matter of perspective? Or is 
> that a bug?

From the top of my head, Cayenne detects a cycle in relationship joins, but it 
can't tell which relationship in the pair a user might prefer to change (e.g. a 
relationship may only be relevant in subclass). So it takes a random guess. We 
should probably improve the error message to mention both relationships are 
candidates for refactoring.

Andrus


On Mar 27, 2012, at 12:48 AM, Robert Zeigler wrote:

> After examining my project some more, I found the offending relationship.
> 
> I have (generically):
> Entry (to one)-> User
>  EntryType1 -> user (inherited from Entry)
>  EntryType2 -> user (inherited from Entry)
> 
> And:
>  User (to many) => EntryType1
> 
> The offending relationship was the User => EntryType1. Once I changed that to 
> User => Entry, the project validated fine.
> This makes sense: having User -> Entry and Entry -> User makes more sense 
> than User -> EntryType1 and Entry -> User. The "bad" mapping is an artifact 
> of having refactored the class hierarchy awhile ago.
> 
> That said, the warning was pointing to the Entry entity, but I think the bad 
> mapping was in the User entity. Maybe it's a matter of perspective? Or is 
> that a bug?
> 
> Robert
> 
> On Mar 26, 2012, at 3/264:41 PM , Robert Zeigler wrote:
> 
>> I'm gradually migrating my projects to 3.1M3 from the 3.0 series. Today, I 
>> converted a project in the modeler and it now complains:
>> 
>> "Usage of super entity's relationships 'Entry.user' as reversed 
>> relationships for sub entity is discouraged"
>> 
>> I'm using single-table inheritance in this case, and "Entry" is the 
>> superclass, with two sub-classes. Every subclass needs a reference to the 
>> "user" table, so I put the relationship in the superclass rather than the 
>> subclasses. So my questions:
>> 
>> 1) Why is this discouraged?
>> 1b) What are the side-effects of maintaining the current mapping?
>> 2) I suppose the "correct" thing is to remap this as one relationship to the 
>> user table for each subclass?
>> 3) What change in behavior from 3.0.2 -> 3.1M3 warrants this new 
>> warning/preference? Or has it always been bad practice but now we're letting 
>> people know?
>> 
>> Robert
> 
> 

Reply via email to