cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Watson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAY-2242) Vertical Inheritance: Cannot Insert Record With Multiple Flattened Relationships
Date Wed, 22 Feb 2017 17:14:44 GMT

    [ https://issues.apache.org/jira/browse/CAY-2242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15878745#comment-15878745
] 

Matt Watson commented on CAY-2242:
----------------------------------

Thanks for the quick resolution. I had a fix ready that I was going to clean up this morning,
but I like your solution better :)

> Vertical Inheritance: Cannot Insert Record With Multiple Flattened Relationships
> --------------------------------------------------------------------------------
>
>                 Key: CAY-2242
>                 URL: https://issues.apache.org/jira/browse/CAY-2242
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 4.0.M4
>            Reporter: Matt Watson
>            Assignee: Nikita Timofeev
>              Labels: inheritance, multiple, relationship, vertical
>             Fix For: 4.0.M5
>
>         Attachments: CAY_2242_breaking_test.patch
>
>
> Copied and directly related to issue CAY-2122
> When using the following DbEntities:
> IV_OTHER (id, name)
> IV_BASE (id, type, name)
> IV_IMPL (id, attr1, attr2, other1_id, other2_id) (vertically inherits IV_BASE)
> all fields are non-null
> We end up with ObjEntities:
> IvOther
> IvBase (abstract)
> IvImpl extends IvBase
> When running the following code:
> {code:java}
> IvOther other1 = context.newObject(IvOther.class);
> other1.setName("other1");
> IvOther other2 = context.newObject(IvOther.class);
> other2.setName("other2");
> IvImpl impl = context.newObject(IvImpl.class);
> impl.setName("Impl 1");
> impl.setAttr1("attr1");
> impl.setAttr2("attr2");
> impl.setOther1(other1);
> impl.setOther2(other2);
> context.commitChanges();
> {code}
> Committing this errors in the database, because its trying to insert into the IV_IMPL
table with a NULL value for OTHER2_ID
> The original issue (and test) was referring to an Entity that only had 1 flattened relationship.
I recently had to add another relationship to this Entity, and discovered the same bug pops
up again. This time its because the new code does not handle merging the flattenedArcKeys
if more than one exists per ObjectId.
> I will upload the breaking test shortly.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message