Re: many to many relation

From: marco turchi (marco.turch..mail.com)
Date: Sun Dec 10 2006 - 12:59:24 EST

  • Next message: Tore Halset: "Re: many to many relation"

    Hi Marcin,

    I check my model, and now the xxx.map.xml is equal to your example.
    The new problem is inside Java.
    you wrote:

    >Entity e = getContext().newObject(Entity.class);
    >Name n getContext().newObject(Name.class);
    >e.addToNames(n);
    >getContext().commitChanges();

    but the method addToName does not accept a Name object, but a NameRelation
    object.
    Do you know where the error is?

    Thanks a lot
    Marco

    On 12/8/06, Marcin Skladaniec <marci..sh.com.au> wrote:
    >
    > Hi
    > just check if in your model (xxx.map.xml) you have something like that :
    >
    > <db-entity name="Entity">
    > <db-attribute name="id" type="INTEGER" isPrimaryKey="true"
    > isMandatory="true"/>
    > more stuff
    > </db-entity>
    > <db-entity name="NameRelation">
    > <db-attribute name="entityId" type="INTEGER"
    > isPrimaryKey="true"
    > isMandatory="true"/>
    > <db-attribute name="nameId" type="INTEGER"
    > isPrimaryKey="true"
    > isMandatory="true"/>
    > eventually more stuff
    > </db-entity>
    > <db-entity name="Name"> <db-attribute name="id"
    > type="INTEGER"
    > isPrimaryKey="true" isMandatory="true"/>
    > more stuff
    > </db-entity>
    >
    >
    > a bit further down :
    >
    > <obj-entity name="Entity"
    > className="Entity" dbEntityName="Entity">
    > stuff here
    > </obj-entity>
    > <obj-entity name="NameRelation" className="NameRelation" >
    > stuff here
    > </obj-entity>
    > <obj-entity name="Name" className="Name" dbEntityName="Name">
    > stuff here
    > </obj-entity>
    >
    > and now the most important:
    >
    > <db-relationship name="entities" source="Name"
    > target="NameRelation"
    > toDependentPK="true" toMany="true">
    > <db-attribute-pair source="id" target="nameId"/>
    > </db-relationship>
    > <db-relationship name="names" source="Entity" target="NameRelation"
    > toDependentPK="true" toMany="true">
    > <db-attribute-pair source="id" target="entityId"/>
    > </db-relationship>
    > <db-relationship name="entity" source="NameRelation"
    > target="Entity"
    > toMany="false">
    > <db-attribute-pair source="entityId" target="id"/>
    > </db-relationship>
    > <db-relationship name="name" source="NameRelation" target="Name"
    > toMany="false">
    > <db-attribute-pair source="nameId" target="id"/>
    > </db-relationship>
    >
    >
    > <obj-relationship name="entities" source="Name" target="Entity"
    > deleteRule="Deny" db-relationship-path="entities.entity"/>
    > <obj-relationship name="names" source="Entity" target="Name"
    > deleteRule="Deny" db-relationship-path="names.name"/>
    >
    >
    > and now in Java:
    >
    > Entity e = getContext().newObject(Entity.class);
    > Name n getContext().newObject(Name.class);
    > e.addToNames(n);
    > getContext().commitChanges();
    >
    > This should do.
    > Marcin
    >
    >
    > On 09/12/2006, at 1:53 AM, marco turchi wrote:
    >
    > > Hi,
    > > I'm a new Cayenne user and I'm trying to create a many to many
    > > relationship.
    > > This is the whole situation:
    > > Entity<<->>NameRelation<<->>Name
    > >
    > > NameRelation has a composed key id_entity, id_name
    > >
    > > I create the model where
    > > Entity has a "to many" relationship to Name, and a relationship that
    > > forwards its key to NameRelation (the flag "To Dep PK" enabled)
    > >
    > > Name has a relationship that forwards its key to NameRelation (the
    > > flag "To
    > > Dep PK" enabled)
    > >
    > > NameRelation has two "to many" relationship directed to Name and
    > > Entity.
    > >
    > > The problem is that when I insert an element into Entity and into
    > > Name, the
    > > software did not insert automatically the row into NameRelation.
    > >
    > > maybe it is an easy question for you, but not for me... :-(
    > > please, can you help me?
    > >
    > > Thanks a lot
    > > Marco
    >
    > -------------------------->
    > ish
    > http://www.ish.com.au
    > Level 1, 30 Wilson Street Newtown 2042 Australia
    > phone +61 2 9550 5001 fax +61 2 9550 4001
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Sun Dec 10 2006 - 12:59:57 EST