> FYI, polymorphic associations to concrete mappings are totally > unsupported in Hibernate, an ORM that has a lot more maturity, > widespread usage, and developers on it than this one...leaving me > fairly uninspired to worry much about SA's similar limitations with > polymorphic concrete mappings (even though SA has a better chance > of supporting them, since we support mappings to unions). > > http://www.hibernate.org/hib_docs/reference/en/html/ > inheritance.html#inheritance-strategies > > concrete mappings and A->B->C->D inheritance doesnt strike me as > very high priority at this point....what im becoming interested in > from hibernate at this point is its ability to issue multiple > SELECTs for one query, for polymorphic loading as well as immediate > relationship loading. thats of more generalized usage than SA's > reliance upon UNION and elaborate LEFT OUTER JOINs.
that's all ok, i don't want u to do it, i want to know a how it can be done - if i ever need it. Anyway i cannot use concrete polymorphic stuff now, so i don't use it. But i do use table-inheritance, and there are some things there that do not work - or at least the way i'm using SA does not work. See the other mail about lazy-reference to polymorphic mappers; seems to me the select issued for lazy-load is wrong: SELECT pu_b.db_id AS pu_b_db_id, pu_b.name AS pu_b_name, pu_b."linkA_id" AS "pu_b_linkA_id", pu_b.atype AS pu_b_atype, pu_b."dataC" AS "pu_b_dataC", pu_b."dataB" AS "pu_b_dataB" FROM ( SELECT "C".db_id AS db_id, "A".name AS name, "A"."linkA_id" AS "linkA_id", "A".atype AS atype, "C"."dataC" AS "dataC", "B"."dataB" AS "dataB" FROM "A" JOIN "B" ON "B".db_id = "A".db_id JOIN "C" ON "C".db_id = "B".db_id UNION ALL SELECT "bz4B".db_id AS db_id, "bz4B".name AS name, "bz4B"."linkA_id" AS "linkA_id", "bz4B".atype AS atype, CAST(NULL AS TEXT) AS "dataC", "bz4B"."dataB" AS "dataB" FROM ( SELECT "A"."linkA_id" AS "linkA_id", "A".name AS name, "A".db_id AS db_id, "A".atype AS atype, "B"."dataB" AS "dataB" FROM "A" JOIN "B" ON "B".db_id = "A".db_id WHERE "A".atype = ? ) AS "bz4B" ) AS pu_b WHERE pu_b."linkA_id" = pu_b.db_id ORDER BY pu_b.oid IMO the last WHERE would need a second FROM entry but it has only one?? > On Feb 21, 2007, at 3:02 PM, [EMAIL PROTECTED] wrote: > >> id use an association table with its own entity to make things > >> easy. > > > > hm, u mean... A.link references that table by single id, and the > > table contains the tuple (discriminator,id) ? But isn't this > > another sort of table-inheritance? looks like a join to me... not > > that i'm big specialist on joins. > > And how to automate the secondary loadby(discriminator,id)? > > > >> On Feb 21, 2007, at 10:05 AM, svilen wrote: > >>> g'day. > >>> > >>> How one can make such thing as a reference to > >>> concrete-inherited polymorphic mapper? > >>> e.g. if there are just two, A and B, B inherits A, both have > >>> full concrete tables. A has polymorphic mapper. > >>> > >>> If both tables have separate primary ids, they will overlap as > >>> values - table_A.id=1 for some A() and table_B.id=1 for some > >>> B() are both ok; hence, query(A).getby_id(1) would return 2 > >>> objects via the polymorphic union. > >>> in this case, the unique key within the polymunion seems to be > >>> the id+type_discriminator; where type_discriminator effectively > >>> means "this id is from that table". > >>> > >>> i see 2 possibilities here: > >>> > >>> - use 2-field key: a tuple of discriminator(table_name) and > >>> id-in-that-table. How would one make references to those > >>> objects then? e.g. what would be the definition of Column( > >>> 'mylink_id', ...) be ? it becomes a link to multiple tables... > >>> Would the propertyLoaders support such multi-column key? or > >>> make some constructed single key instead? > >>> > >>> - use one common sequence for filling both primary-keys of > >>> both tables. But this is limited to DBs which support > >>> sequences... > >>> > >>> Any help? > >>> > >>> ciao > >>> svil > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---