cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kevin Menard <nirvd...@gmail.com>
Subject Re: CAY-1378, CAY-1009...
Date Mon, 08 Feb 2010 13:39:17 GMT
On Sun, Feb 7, 2010 at 11:23 AM, Andrus Adamchik <andrus@objectstyle.org>wrote:

> On Feb 7, 2010, at 5:39 PM, Andrey Razumovsky wrote:
>
>  Also we need to check Victor's comment:
>>
>> https://issues.apache.org/jira/browse/CAY-1009?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12804515
>> #action_12804515
>>
>
> I did and I agree with him about the semantics of the fix.
>


I'm reaching here a bit since it's been a while since I looked at this
problem, but I think the semantics were preserved because isSubentityOf
wasn't a proper subentity relationship.  I.e., an entity could be a
subentity of itself.  So, while the code looks strange, it worked.



>
> Also, answering my own earlier observation:
>
>
>   DirectToSubEntity.subEntities is NOT a reverse relationship of
>> BaseEntity.toDirectToSubEntity,
>>
>
> Looks like a simple model of relationship/reverse relationship breaks when
> inheritance is involved. If we define "reverse" as relationship over the
> same set of joins, just going in the opposite direction, then we can have
> multiple reverse relationships for any single relationship and will need to
> do much more e.g. when connecting related objects...
>
>
I'll have to take a look at this test case again.  I believe my patch fixed
a very specific instance of what I thought at the time was a much larger
problem.

The core issue I was seeing at the time was something along the lines of:

Customer is a subclass of Account
Customer requires an Address

There is no explicit mapping from Account to Address.
There is a mapping between Customer and Address and is marked as mandatory.

Cayenne added a runtime relationship from Account to Address and used that
when doing something like customer.setAddress(), bypassing the mapped
relationship, which caused a validation failure.

IIRC, the patch I supplied allowed the relationship search to compare
against a broader range of src-target pairings, allowing it to find the
relationship I explicitly mapped.


I may have some of the details wrong there since I haven't dealt with this
is a while.  But I should be able to pull up the mapping that wasn't working
for me.

-- 
Kevin

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message