I had a Cayenne/PostgreSQL test/example application and used the default
PK size of 20 and it worked OK for me. I haven't tried to run it in a
few months, though, but I know that used to function correctly.
-----Original Message-----
From: Lindsay Steele [mailto:lsteel..inet.net.au]
Sent: Thursday, April 20, 2006 4:44 PM
To: cayenne-use..ncubator.apache.org
Subject: Re: PK problem with Postgre
With Postgres, I found that I had to use a Custom Sequence - then put
in the sequence name and then use a Cached PK Size of 1.
This wasn't exactly intuitive and Postgres developers think Cayenne has
issues - but it does seem to work.
WONDER wrote:
> Hi,
>
> I have problem with PostGreSQL ver 8.1.3 using JDBC ver 8.2dev-501
JDBC 3
> and Cayenne 1.2.B2.
>
> I use the Default Strategy to create the PKs using Cayenne. in the DB,
i
> created the SEQ : pk_TableName. like pk_image for Table image.
>
> Sometimes I get the following error and sometimes it just work.
> Till now, I coulding find the logic behind.
>
> Anybody can help?
> Thanks.
>
> -------------------------------------------------
> Priority : INFO
>
> Class.Method(line):
>
org.objectstyle.cayenne.access.QueryLogger.logQueryError(QueryLogger.jav
a:43
> 9)
>
> Message: *** error.
>
> org.postgresql.util.PSQLException: ERROR: duplicate key violates
unique
> constraint "image_pk"
>
> at
>
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecu
torI
> mpl.java:1513)
>
> at
>
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImp
l.ja
> va:1298)
>
> at
>
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:
349)
>
> at
>
org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2St
atem
> ent.java:2559)
>
> at
>
org.objectstyle.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.j
ava:
> 164)
>
> at
>
org.objectstyle.cayenne.access.jdbc.BatchAction.performAction(BatchActio
n.ja
> va:114)
>
> at
>
org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQuer
yAct
> ion.java:95)
>
> at
org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:309
)
>
> at
>
org.objectstyle.cayenne.access.DataDomainFlushAction.runQueries(DataDoma
inFl
> ushAction.java:255)
>
> at
>
org.objectstyle.cayenne.access.DataDomainFlushAction.flush(DataDomainFlu
shAc
> tion.java:177)
>
> at
>
org.objectstyle.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:82
7)
>
> at
>
org.objectstyle.cayenne.access.DataDomain$2.transform(DataDomain.java:79
8)
>
> at
>
org.objectstyle.cayenne.access.DataDomain.runInTransaction(DataDomain.ja
va:8
> 53)
>
> at
org.objectstyle.cayenne.access.DataDomain.onSync(DataDomain.java:795)
>
> at
>
org.objectstyle.cayenne.access.DataContext.flushToParent(DataContext.jav
a:12
> 17)
>
> at
>
org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.jav
a:11
> 21)
>
> at
>
de.mrer.base.CayenneBaseComponent.commitChanges(CayenneBaseComponent.jav
a:65
> )
>
> at ImageEditPage.uploadFile(ImageEditPage.java:99)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39
> )
>
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl
> .java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
>
> at
>
KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAcces
sor.
> java:54)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(
NSKe
> yValueCoding.java:1160)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueFo
rKey
> (NSKeyValueCoding.java:1268)
>
> at
com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValu
eCod
> ing.java:498)
>
> at
>
com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementatio
n.va
> lueForKeyPath(NSKeyValueCodingAdditions.java:212)
>
> at
>
com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:16
00)
>
> at
>
com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent
(WOK
> eyValueAssociation.java:46)
>
> at
>
com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitBu
tton
> .java:59)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOConditional.invokeAction(WOCondition
al.j
> ava:55)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1168)
>
> at
>
com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1
375)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredPage(WOComponentRequestHandler.java:196)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredSession(WOComponentRequestHandler.java:287)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredApplication(WOComponentRequestHandler.java:322)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque
st(W
> OComponentRequestHandler.java:358)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques
t(WO
> ComponentRequestHandler.java:432)
>
> at
>
com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.jav
a:13
> 06)
>
> at
>
com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.
java
> :173)
>
> at
>
com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java
:254
> )
>
> at java.lang.Thread.run(Thread.java:595)
>
>
> --------
>
> Priority : FATAL
>
> Class.Method(line):
>
de.mrer.base.BaseComponent.validationFailedWithException(BaseComponent.j
ava:
> 104)
>
> Message: de.mrer.exceptor.CustomException: [v.1.2B2 April 17 2006]
Commit
> Exception
>
> ========================
>
> de.mrer.exceptor.CustomException: [v.1.2B2 April 17 2006] Commit
Exception
>
> at
>
de.mrer.base.CayenneBaseComponent.commitChanges(CayenneBaseComponent.jav
a:74
> )
>
> at ImageEditPage.uploadFile(ImageEditPage.java:99)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39
> )
>
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl
> .java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:585)
>
> at
>
KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAcces
sor.
> java:54)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(
NSKe
> yValueCoding.java:1160)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueFo
rKey
> (NSKeyValueCoding.java:1268)
>
> at
com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539)
>
> at
>
com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValu
eCod
> ing.java:498)
>
> at
>
com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementatio
n.va
> lueForKeyPath(NSKeyValueCodingAdditions.java:212)
>
> at
>
com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:16
00)
>
> at
>
com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent
(WOK
> eyValueAssociation.java:46)
>
> at
>
com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitBu
tton
> .java:59)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComp
onen
> tContent.java:31)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
>
com.webobjects.appserver._private.WOConditional.invokeAction(WOCondition
al.j
> ava:55)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
>
com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCo
mpon
> entReference.java:104)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WO
Dyna
> micGroup.java:101)
>
> at
>
com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicG
roup
> .java:110)
>
> at
com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945)
>
> at
com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1168)
>
> at
>
com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1
375)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredPage(WOComponentRequestHandler.java:196)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredSession(WOComponentRequestHandler.java:287)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWit
hPre
> paredApplication(WOComponentRequestHandler.java:322)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler._handleReque
st(W
> OComponentRequestHandler.java:358)
>
> at
>
com.webobjects.appserver._private.WOComponentRequestHandler.handleReques
t(WO
> ComponentRequestHandler.java:432)
>
> at
>
com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.jav
a:13
> 06)
>
> at
>
com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.
java
> :173)
>
> at
>
com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java
:254
> )
>
> at java.lang.Thread.run(Thread.java:595)
>
> -------------------------------------------------
>
>
>
This archive was generated by hypermail 2.0.0 : Thu Apr 20 2006 - 16:48:10 EDT