Re: getPrimaryKeys ?

From: Arnaud Garcia (arnaud.garci..im.hcuge.ch)
Date: Thu Feb 02 2006 - 08:05:15 EST

  • Next message: Dave Merrin: "Primary keys in expressions"

    hi ryan,
    you right, my PK are in the XML and I just need to compare the
    properties ...
    But, my second question was: Is there a method to return all the PK
    atributes of an object ? (of course I can look at my model, but I would
    like to create a general method ....)

    for example:
    o1 -
            (String) field1 : PK
            (Integer) field 2: PK
           (String) field3
           (String) field4

    something general, like o1.getPrimarykeyAttributes() which will return
    field1 and field2

    thanks
    arnaud

    Ryan Holmes a écrit :

    > I'm confused - in your code snippet, o2.getObjectId() *should* return
    > null because o2 is a new object and the PK value is unknown at that
    > point. What kind of PK's are you working with:
    > auto-increment/sequence, composite, natural or what?
    >
    > You mentioned that your data is coming from XML. Are the primary key
    > values already assigned in the XML?
    >
    > My guess is that you simply need to expose your primary key value(s)
    > as regular properties and use their getters in your equals() method,
    > but I may not understand the situation.
    >
    > See http://objectstyle.org/confluence/display/CAY/Mapping+Primary+Keys
    >
    > -Ryan
    >
    > Arnaud Garcia wrote:
    >
    >> thanks Andrus,
    >>
    >> Well, I can't do this....
    >> if o1 is in a dataContext, for example o1 is a child of O.
    >> if I build o2 from nothing, o2 = new o2(), o2.set ... ect..
    >> then if I do:
    >> system.out.println(o1.getObjectid()), I will have all the values of o1
    >> BUT
    >> a println of o2.getObjectid() return null !
    >>
    >> So to solve my problem, I did a simple fields comparison between the
    >> PK attributes of o1 and o2 and it works ... but I thought there was
    >> another way.
    >>
    >> thanks
    >> arnaud
    >>
    >>
    >> Andrus Adamchik a écrit :
    >>
    >>> getPrimaryKeys() in Cayenne is getObjectId()... So you can do
    >>> "o1.getObjectid().equals(o2.getObjectId())" comparison.
    >>>
    >>> Andrus
    >>>
    >>>
    >>> On Jan 31, 2006, at 12:25 PM, Arnaud Garcia wrote:
    >>>
    >>>> Hello,
    >>>>
    >>>> Is there a way to get all the primary keys attributes of a
    >>>> CayenneDataObject to compare it with another one?
    >>>>
    >>>> What I need to do:
    >>>> I have another xml datasource which sends some objects, and I need
    >>>> to compare these objects before adding them to another object (one
    >>>> to many relationship) ... so I need to compare them with their
    >>>> primary keys.
    >>>>
    >>>> if anObject.getPrimaryKeys().equal(maybeTheSameObject.getPrimaryKeys()
    >>>> then
    >>>> // do nothing
    >>>> else
    >>>> containerObject.addTo(anObject)
    >>>>
    >>>> => If I don't test the object before adding it, I have a violation
    >>>> constrainst ...
    >>>>
    >>>> thanks for help
    >>>>
    >>>> arnaud
    >>>>
    >>>>
    >>>>
    >>>
    >>>
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Thu Feb 02 2006 - 08:04:40 EST