Since you haven't provided your Transfer version, or what DB you are on, or your table structure, I can only guess: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
1) You can only use Foriegn keys for properties or for relationships, not both. 2) Using a primary key for a struct key can cause issues when attempting to add new objects to it, thus giving you bad cached data. (and gives you no benefit as well, as you can always retrieve from Transfer by ID). Mark On Thu, Oct 9, 2008 at 11:30 PM, acdhirr <[EMAIL PROTECTED]> wrote: > > > Looks like setting lazy="true" for both onetomany's solves the > identical struct problem. One always being empty, I can safely merge > them into one struct so I don't have to decide which one to choose. > > Still puzzles me why this is happening... > > > On Oct 9, 1:26 pm, acdhirr <[EMAIL PROTECTED]> wrote: >> Dear folks at the transfer list, >> >> Please help me with a tough issue. >> >> I have a table structure as below (simplified transfer xml) >> >> Contacts basically stores addresses of both persons and >> organizations. >> Each organization can be linked to several persons, whereas each >> person can be linked to >> several organizations. >> >> A linking table is required, but it's not just a linking table, it >> also stores information >> describing the type of relationship between a person and an >> organization and a number of other fields. >> Therefore I can't use a manytomany. >> >> The linking table links Contacts to Contacts. >> >> This is my (simplified) transfer: >> >> <object name="Contacts" table="contacts"> >> >> <id name="IDContact" column="code" type="string" /> >> ... >> >> <onetomany name="repr1"> >> <link to="Representatives" column="IDPerson" /> >> <collection type="struct"> >> <key property="IDRepresentative" /> >> </collection> >> </onetomany> >> >> <onetomany name="repr2"> >> <link to="Representatives" column="IDOrganization" /> >> <collection type="struct"> >> <key property="IDRepresentative" /> >> </collection> >> </onetomany> >> >> </object> >> >> <object name="Representatives" table="representatives"> >> >> <id name="IDRepresentative" /> >> <property name="IDPerson" /> >> <property name="IDOrganization" /> >> <property name="job" /> >> ... >> >> </object> >> >> Since manytomany is not an option, I took two onetomany's. That's >> going to return me 2 structs: >> >> Contact.getRepr1Struct() and Contact.getRepr1Struct(). >> >> Strangely, when IDContact links to IDPerson I get only one struct >> containing Representative objects, but >> when IDContact links to IDOrganization I get 2 identical structs. >> >> Now I can live with that, with some conditional logic I could test to >> see if at least one struct >> is loaded and then take that struct. >> >> But it just strikes me as odd, which could suggest that I am >> completely going the wrong direction. >> >> So I was wondering if anyone has an explanation for this behaviour, or >> maybe another approach for these >> self referencing many-to-many's. >> >> Thanks, >> Richard > > > -- E: [EMAIL PROTECTED] W: www.compoundtheory.com --~--~---------~--~----~------------~-------~--~----~ Before posting questions to the group please read: http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer You received this message because you are subscribed to the Google Groups "transfer-dev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/transfer-dev?hl=en -~----------~----~----~----~------~----~------~--~---
