• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: EOModel of sub-entity not added to EODatabase
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EOModel of sub-entity not added to EODatabase


  • Subject: Re: EOModel of sub-entity not added to EODatabase
  • From: Samuel Pelletier <email@hidden>
  • Date: Tue, 12 Feb 2019 08:50:54 -0500

Hi Fabian,

I'm not familiar with this low level part of EOF but after surfing the doc I
may have something.

Have you try to register the CooperatingObjectStoreWasAddedNotification ? If
the new object store is passed, you may have an opportunity to force load the
model there.

Regards,

Samuel


> Le 12 févr. 2019 à 07:16, Fabian Peters <email@hidden> a écrit :
>
> Hello everybody!
>
> I've come across an issue with cross-model inheritance (single-table in this
> case). For a minimal test setup I added an EOModel FrameworkUser to
> ERMoviesLogic, containing an abstract parent entity AbstractUser and a
> concrete child entity FrameworkUser. I added a second EOModel AppUser with a
> concrete child of AbstractUser called AppUser to the ERModernMoviesTest app.
>
> Fetching for all AbstractUser EOs does return all concrete child EOs, i.e.
> both FrameworkUser and AppUser. Accessing attributes that are available on
> AbstractUser is fine, but deleting an AppUser EO causes an exception:
>
>    java.lang.IllegalStateException: Unable to find entity for object
>
> It turns out that the EOModel AppUser is not being added to the EODatabase
> when the fetch is carried out.
>
> Deletion with concrete child entity in FrameworkUser:
>
> ERXDatabase.addModel: FrameworkUser
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  - Using JDBCPlugIn
> 'H2PlugIn' for ERCompositeAdaptor@1026056307
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  -  connecting with
> dictionary: {driver = "org.h2.Driver"; plugin = "H2PlugIn"; password =
> "<password deleted for log>"; URL = "jdbc:h2:mem:ERModernMoviesTest"; }
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  -  === Begin Internal
> Transaction
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  -  evaluateExpression:
> <com.webobjects.jdbcadaptor._H2PlugIn$H2Expression: "SELECT t0.ACCESS_LEVEL,
> t0.CUSTOMER_ID, RTRIM(t0.PASSWORD), RTRIM(t0.TYPE), t0.USER_ID,
> RTRIM(t0.LOGIN) FROM rentalsuser t0 WHERE (t0.TYPE = ? OR t0.TYPE = ?)"
> withBindings: 1:"app"(type), 2:"framework"(type)>
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  - 4 row(s) processed
> Feb 12 12:09:07 ERModernMoviesTest[9876] DEBUG NSLog  -  === Commit Internal
> Transaction
> FetchTask._call: ringle: app
> FetchTask._call: jboyles: app
> FetchTask._call: lstark: app
> FetchTask._call: jjeffers: framework
>
>    => java.lang.IllegalStateException: Unable to find entity for object
> <webobjectsexamples.businesslogic.common.AppUser pk:"4">
>
> Deletion with only abstract parent entity AbstractUser in FrameworkUser:
>
> ERXDatabase.addModel: FrameworkUser
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  - Using JDBCPlugIn
> 'H2PlugIn' for ERCompositeAdaptor@22939787
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  -  connecting with
> dictionary: {driver = "org.h2.Driver"; plugin = "H2PlugIn"; password =
> "<password deleted for log>"; URL = "jdbc:h2:mem:ERModernMoviesTest"; }
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  -  === Begin Internal
> Transaction
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  -  evaluateExpression:
> <com.webobjects.jdbcadaptor._H2PlugIn$H2Expression: "SELECT t0.ACCESS_LEVEL,
> t0.CUSTOMER_ID, RTRIM(t0.PASSWORD), RTRIM(t0.TYPE), t0.USER_ID,
> RTRIM(t0.LOGIN) FROM rentalsuser t0 WHERE t0.TYPE = ?" withBindings:
> 1:"app"(type)>
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  - 3 row(s) processed
> Feb 12 12:11:36 ERModernMoviesTest[9876] DEBUG NSLog  -  === Commit Internal
> Transaction
> FetchTask._call: ringle: app
> FetchTask._call: jboyles: app
> FetchTask._call: lstark: app
>
>   =>  java.lang.IllegalStateException: Unable to find entity for object
> <webobjectsexamples.businesslogic.common.AppUser pk:"4">
>
> Interestingly, the restricting qualifier is being correctly generated, i.e.
> it contains the type for "app" and for "framework" EOs.
>
> As a workaround, I add the following before the fetch
>
>
> EODatabaseContext.registeredDatabaseContextForModel(ERXModelGroup.defaultGroup().modelNamed("AppUser"),
>  ec);
>
> which forces the model to be loaded.
>
> Now, my question is where can this be fixed in a generic manner? The fetch
> causes an EOCooperatingObjectStoreNeededNotification notification to be sent,
> which gets handled by EODatabaseContext._cooperatingObjectStoreNeeded(). But
> that's a static method…
>
> Fabian
>
> P.S.: The fetch in question takes place in an EC created with an
> EOObjectStoreCoordinator from the ERXTaskObjectStoreCoordinatorPool. AFAICT
> this is only relevant in that the EOModel is more likely to not having been
> added, compared to using an EOObjectStoreCoordinator that is shared among
> sessions.
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: EOModel of sub-entity not added to EODatabase
      • From: Fabian Peters <email@hidden>
References: 
 >EOModel of sub-entity not added to EODatabase (From: Fabian Peters <email@hidden>)

  • Prev by Date: EOModel of sub-entity not added to EODatabase
  • Next by Date: Re: EOModel of sub-entity not added to EODatabase
  • Previous by thread: EOModel of sub-entity not added to EODatabase
  • Next by thread: Re: EOModel of sub-entity not added to EODatabase
  • Index(es):
    • Date
    • Thread