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