Ok despite my eyes bleeding and my brain melting, I continued to dig and
found that at some point that EORelationship#anyInverseRelationship is
called to order the changes. This can't find an inverse relationship and
creates one in memory then calls EOEntity#setEdited, setting
_attributesToSave to null...
The relationship is between an entity from another model
"RepartUefEtablissement" and the subentity "Ue", a quick workaround
consists in calling anyInverseRelationship before the saveChanges() :

 EOEntity entity = EOUtilities.entityForClass(ec, EORepartUefEtablissement.
class);
EORelationship relationship =
entity.relationshipNamed(EORepartUefEtablissement.COMPOSANT_UE.key());
relationship.anyInverseRelationship();
Hope it will help someone else

Alex


2013/5/30 Alexis Tual <[email protected]>

> Hi list,
>
> this one is tedious, in a framework, we have a model with an abstract
> entity "Composant" and subentities "Ap" and "Ue" mapped with vertical
> inheritance.
> In one application, this works with no error.
> In another app, we have a SQL error when a instance of Ap and Ue are
> inserted and saved :
> ----> SQL for AP insertion is OK :
> INSERT INTO SCO_SCOLARITE.COMPOSANT(ID_COMPOSANT, CODE, LL_COMPOSANT...
> INSERT INTO SCO_SCOLARITE.AP(TYPE_AP_ID, SEUIL, NB_GROUPES...
>
> ----> SQL for Ue insertion is not OK :
> INSERT INTO SCO_SCOLARITE.COMPOSANT(*ID_UE*, CODE, LL_COMPOSANT...
>
> It should be ID_COMPOSANT...
>
> So, I took my jd and digged down EOF, here's my found :
> when generating SQL, ERXEntity#anyAttributeNamed is called in
> EOSQLExpression#prepareInsertExpressionWithRow.
> In this method, when EOEntity#anyAttributeNamed is called for the
> attribute 'NeededByEOF0' of AP, it returns the right thing :
>
> <EOAttribute NeededByEOF0
> name : 'NeededByEOF0'
>  definition : 'sco_Composant.id'
> className : 'java.lang.Number'
> externalType : 'NUMBER'
>  valueType : 'i'
> precision : '38'
> >
>
> whereas for the same attribute of UE, it returns null.. and this explains
> why the primary key of the subentity is taken instead of the one from the
> parent...
> So why it returns null ? The responsible is attribute
> EOEntity#_attributesToSave which is somehow unset...
>
> Lachlan Deck or anyone, any ideas ?
>
> Any help is appreciated,
>
> Alex
>
>
>
>
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to