Re: How do I get a record for non integer pk?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed May 16 2007 - 13:31:17 EDT

  • Next message: Malcolm Edgar: "Re: How do I get a record for non integer pk?"

    I think you are right. Click CayenneForm IIRC does not support non-
    int PK's. Your stack confirms that:

    >>> at org.objectstyle.cayenne.DataObjectUtils.intPKForObject
    >>> (DataObjectUtils.java:93)
    >>> at net.sf.click.extras.cayenne.CayenneForm.setDataObject
    >>> (CayenneForm.java:335)

    Andrus

    On May 16, 2007, at 8:23 PM, Frank wrote:

    > I think it has something to do with Click CayenneForm
    > I changed CayenneForm to Form and it works.
    >
    > Seems CayenneForm is tring to fetch my int id
    >
    > Frank
    > ----- Original Message ----- From: "Andrus Adamchik"
    > <andru..bjectstyle.org>
    > To: <use..ayenne.apache.org>
    > Sent: Wednesday, May 16, 2007 1:17 PM
    > Subject: Re: How do I get a record for non integer pk?
    >
    >
    >> These two lines are not the same:
    >>> at org.objectstyle.cayenne.DataObjectUtils.intPKForObject
    >>> (DataObjectUtils.java:93)
    >>>> s = (System) DataObjectUtils.objectForPK(context, System.class,
    >>>> name);
    >> So now you are talking about a different problem. To fix your
    >> latest problem use "pkForObject" instead of "intPKForObject"....
    >> Andrus
    >> On May 16, 2007, at 8:11 PM, Frank wrote:
    >>> Does it have someting to do with the System name? reserved word?
    >>>
    >>> Class org.objectstyle.cayenne.CayenneRuntimeException
    >>> Message [v.1.2.3 May 6 2007] PK is not a number:
    >>> <ObjectId:System, System=AIX>
    >>> org.objectstyle.cayenne.CayenneRuntimeException: [v.1.2.3 May 6
    >>> 2007] PK is not a number: <ObjectId:System, System=AIX>
    >>> at org.objectstyle.cayenne.DataObjectUtils.intPKForObject
    >>> (DataObjectUtils.java:93)
    >>> at net.sf.click.extras.cayenne.CayenneForm.setDataObject
    >>> (CayenneForm.java:335)
    >>> at stemc.page.EditSystemPage.getRecord(EditSystemPage.java:41)
    >>> at stemc.page.EditSystemPage.onGet(EditSystemPage.java:71)
    >>>
    >>> Thanks
    >>>
    >>> Frank
    >>>
    >>>
    >>> ----- Original Message ----- From: "Bryan Lewis"
    >>> <brya..aine.rr.com>
    >>> To: <use..ayenne.apache.org>
    >>> Sent: Wednesday, May 16, 2007 1:01 PM
    >>> Subject: Re: How do I get a record for non integer pk?
    >>>
    >>>
    >>>> We use that objectForPK() method routinely with a String key
    >>>> and haven't
    >>>> had any problems.
    >>>> What do you mean by "not working"? Is it throwing a
    >>>> CayenneRuntimeException?
    >>>>
    >>>>
    >>>> Frank wrote:
    >>>>> Hello,
    >>>>>
    >>>>> The code below is not working, as it expects the PK to be integer.
    >>>>> There is only one String field in the table defined as a pk.
    >>>>>
    >>>>> Thanks
    >>>>>
    >>>>> Frank
    >>>>>
    >>>>> private void getRecord(String name) {
    >>>>> DataContext context = DataContext.getThreadDataContext();
    >>>>> System s = new System();
    >>>>> s = (System) DataObjectUtils.objectForPK(context,
    >>>>> System.class, name);
    >>>>> form.setDataObject(s);
    >>>>> }
    >>>>>
    >>>>
    >>>
    >>>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Wed May 16 2007 - 13:31:46 EDT