cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Razumovsky <razumovsky.and...@gmail.com>
Subject Re: CAY-1378, CAY-1009...
Date Sun, 07 Feb 2010 15:36:32 GMT
As far as i remember, the problem is if we have a mapping:
entities:
A
B extends A - mapped in same db table
C

dbRel:
toA, cArray (from C to A and vice versa) - Is Mandatory

objRel - toA, cArray (from C to A and vice versa)

So, there's isn't any ObjRel from B to C and therefore Cayenne adds runtime
relationship.
Problems come when we're setting relationship via C.setToA(..) and commit.
Cayenne thinks runtime rel from C to B is mandatory (after all, it's mapped
to mandatory dbRel) and fails to commit.
Not sure why I haven't added test maps when committing, maybe I haven't
managed to create one.
We need to investigate this futher, so please hold on reverting the patch

2010/2/7 Andrus Adamchik <andrus@objectstyle.org>

> Actually Bryan's case seems to be pretty clear. I will try to create a test
> case for it now:
>
>  We have a source entity with two to-one relationships to target entities
>> that both inherit from the same table. When we try to insert a new instance
>> of the source entity, we get:
>>
>>  org.apache.cayenne.CayenneRuntimeException:
>>    Error resolving to-one fault. More than one object found. Source Id:
>>    <ObjectId:Claim, CLAIM_ID=8891>, relationship: runtimeRelationship0
>>  org.apache.cayenne.access.ToOneFault.doResolveFault(ToOneFault.java:90)
>>  org.apache.cayenne.access.ToOneFault.resolveFault(ToOneFault.java:54)
>>
>> Cayenne found two objects in the table and thought it was an error.
>>
>
>
>
>
> On Feb 7, 2010, at 5:18 PM, Andrus Adamchik wrote:
>
>  Guys, we need to do something about CAY-1009. The fix doesn't look logical
>> to me, and now it turns out that it breaks other things per CAY-1378.
>>
>> I am looking at commented out test case InheritanceTest.testCAY1009() that
>> Kevin created, and from what I can tell, Cayenne does the right thing here
>> (without the CAY-1009 fix). I.e. DirectToSubEntity.subEntities is NOT a
>> reverse relationship of BaseEntity.toDirectToSubEntity, so we should not
>> expect it to behave as one.
>>
>> Bryan and Andrey also had problems with "runtime" relationships. So could
>> you create test cases for those so we can maybe try looking for the another
>> cause is elsewhere? Or maybe you could provide a failing mapping and
>> describe the problem?
>>
>> Andrus
>>
>>
>>
>> Begin forwarded message:
>>
>>> Andrus Adamchik updated CAY-1378:
>>> ---------------------------------
>>>
>>>  Attachment: 0001-CAY-1378-no-reverse-for-inheritance.patch
>>>
>>> I tend to agree with Victor. Here is my patch reverting CAY-1009 commit
>>> (plus some minor loop refactoring). This fails uncommented InheritanceTest,
>>> but I think the test is wrong. I won't commit this yet, and will take
>>> further discussion to the dev list.
>>>
>>
>>
>>
>


-- 
Andrey

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