• 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: Setting up horizontal inheritance
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Setting up horizontal inheritance


  • Subject: Re: Setting up horizontal inheritance
  • From: Lachlan Deck <email@hidden>
  • Date: Sat, 1 Nov 2008 17:02:51 +1100

On 01/11/2008, at 4:55 PM, Paul Hoadley wrote:

On 01/11/2008, at 3:17 PM, Chuck Hill wrote:

On Oct 31, 2008, at 9:39 PM, Paul Hoadley wrote:

After finding "Subclass Entity" in Entity Modeler, and re-making the child entity specifying horizontal inheritance, this question remains:

On 01/11/2008, at 11:19 AM, Paul Hoadley wrote:

2. Practical WebObjects (p. 32) states that horizontal inheritance "puts a complete copy of each entity into a separate table". Does EOF do this for me? That is, if I use _AMPerson.createAMPerson(), does EOF put a row in the 'amperson' table, and a corresponding row in the 'person' table?

I've just used _AMPerson.createAMPerson() to create a new AMPerson. There's a new row in 'amperson', and nothing in 'person'. Have I misunderstood "complete copy" here? That is, should there be a corresponding new row in 'person', or not?

No, Person will remain empty as it is abstract. Each concrete entity is written to its own table. One row (and hence one table) is written per EO.

OK. Tell me if this complicates things: Person is "abstract" in this particular app, in that all I will be creating is AMPersons. But Person is in a separate EO model, in a stand-alone framework. I haven't marked Person abstract in Entity Modeler, as for some applications it might be enough and I would actually instantiate it.


Are you sure you want Horizontal Inheritance?

Not completely.

Single table is usually the best choice.

I chose HI because I wanted to avoid what Lachlan describes in another mail:


For both VI and STI you usually define a column in the parent (e.g., called entityType) that's populated on awakeFromInsertion with e.g., if (entityType() == null) setEntityType(entityName());
In the model you then in each child entity set the definition for the restricting qualifier to e.g., (entityType like 'EntityName').

Maybe I should take a step back. I assumed I wanted inheritance at all because I have a basic EO called Person in a model in a utility framework, and in a particular app I want to add three relationships to app-specific EOs. (In other apps, Person might be sufficient as it is, and I would instantiate it as an EO.) Is this an example of where one would use inheritance? Is HI a bad choice, and should I use STI instead?

Perhaps you just want an entity that relates back to person. i.e., a role.


with regards,
--

Lachlan Deck



_______________________________________________
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


References: 
 >Setting up horizontal inheritance (From: Paul Hoadley <email@hidden>)
 >Re: Setting up horizontal inheritance (From: Paul Hoadley <email@hidden>)
 >Re: Setting up horizontal inheritance (From: Chuck Hill <email@hidden>)
 >Re: Setting up horizontal inheritance (From: Paul Hoadley <email@hidden>)

  • Prev by Date: Re: Setting up horizontal inheritance
  • Next by Date: Re: Setting up horizontal inheritance
  • Previous by thread: Re: Setting up horizontal inheritance
  • Next by thread: Re: Setting up horizontal inheritance
  • Index(es):
    • Date
    • Thread