Surprise to me. I use Postgres frequently and didn't run into any problems or custom sequences. I often switch between Oracle and Postgres without changing the default PK generation. My Postgres sequences are routine, created like so:
create sequence pk_tablename INCREMENT 20 MINVALUE 1 START 200 CACHE 1; Why do the Postgres developers suspect Cayenne? Lindsay Steele wrote: > 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.java:43 >> >> 9) >> >> Message: *** error. >> >> org.postgresql.util.PSQLException: ERROR: duplicate key violates unique >> constraint "image_pk" >> >> at >> org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorI >> >> mpl.java:1513) >> >> at >> org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.ja >> >> va:1298) >> >> at >> org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:349) >> >> >> at >> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statem >> >> ent.java:2559) >> >> at >> org.objectstyle.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.java: >> >> 164) >> >> at >> org.objectstyle.cayenne.access.jdbc.BatchAction.performAction(BatchAction.ja >> >> va:114) >> >> at >> org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAct >> >> ion.java:95) >> >> at >> org.objectstyle.cayenne.access.DataNode.performQueries(DataNode.java:309) >> >> >> at >> org.objectstyle.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFl >> >> ushAction.java:255) >> >> at >> org.objectstyle.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAc >> >> tion.java:177) >> >> at >> org.objectstyle.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:827) >> >> >> at >> org.objectstyle.cayenne.access.DataDomain$2.transform(DataDomain.java:798) >> >> >> at >> org.objectstyle.cayenne.access.DataDomain.runInTransaction(DataDomain.java:8 >> >> 53) >> >> at org.objectstyle.cayenne.access.DataDomain.onSync(DataDomain.java:795) >> >> at >> org.objectstyle.cayenne.access.DataContext.flushToParent(DataContext.java:12 >> >> 17) >> >> at >> org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:11 >> >> 21) >> >> at >> de.mrer.base.CayenneBaseComponent.commitChanges(CayenneBaseComponent.java:65 >> >> ) >> >> at ImageEditPage.uploadFile(ImageEditPage.java:99) >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 >> >> ) >> >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl >> >> .java:25) >> >> at java.lang.reflect.Method.invoke(Method.java:585) >> >> at >> KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAccessor. >> >> java:54) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKe >> >> yValueCoding.java:1160) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey >> >> (NSKeyValueCoding.java:1268) >> >> at >> com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCod >> >> ing.java:498) >> >> at >> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.va >> >> lueForKeyPath(NSKeyValueCodingAdditions.java:212) >> >> at >> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1600) >> >> >> at >> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOK >> >> eyValueAssociation.java:46) >> >> at >> com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitButton >> >> .java:59) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.j >> >> ava:55) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .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:1375) >> >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredPage(WOComponentRequestHandler.java:196) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredSession(WOComponentRequestHandler.java:287) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredApplication(WOComponentRequestHandler.java:322) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W >> >> OComponentRequestHandler.java:358) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO >> >> ComponentRequestHandler.java:432) >> >> at >> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java: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.java: >> >> 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.java:74 >> >> ) >> >> at ImageEditPage.uploadFile(ImageEditPage.java:99) >> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 >> >> ) >> >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl >> >> .java:25) >> >> at java.lang.reflect.Method.invoke(Method.java:585) >> >> at >> KeyValueCodingProtectedAccessor.methodValue(KeyValueCodingProtectedAccessor. >> >> java:54) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKe >> >> yValueCoding.java:1160) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey >> >> (NSKeyValueCoding.java:1268) >> >> at >> com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1539) >> >> at >> com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCod >> >> ing.java:498) >> >> at >> com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.va >> >> lueForKeyPath(NSKeyValueCodingAdditions.java:212) >> >> at >> com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1600) >> >> >> at >> com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOK >> >> eyValueAssociation.java:46) >> >> at >> com.webobjects.appserver._private.WOSubmitButton.invokeAction(WOSubmitButton >> >> .java:59) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WOComponentContent.invokeAction(WOComponen >> >> tContent.java:31) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver._private.WOConditional.invokeAction(WOConditional.j >> >> ava:55) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at com.webobjects.appserver._private.WOForm.invokeAction(WOForm.java:82) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .java:110) >> >> at >> com.webobjects.appserver.WOComponent.invokeAction(WOComponent.java:945) >> >> at >> com.webobjects.appserver._private.WOComponentReference.invokeAction(WOCompon >> >> entReference.java:104) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeChildrenAction(WODyna >> >> micGroup.java:101) >> >> at >> com.webobjects.appserver._private.WODynamicGroup.invokeAction(WODynamicGroup >> >> .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:1375) >> >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredPage(WOComponentRequestHandler.java:196) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredSession(WOComponentRequestHandler.java:287) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._dispatchWithPre >> >> paredApplication(WOComponentRequestHandler.java:322) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler._handleRequest(W >> >> OComponentRequestHandler.java:358) >> >> at >> com.webobjects.appserver._private.WOComponentRequestHandler.handleRequest(WO >> >> ComponentRequestHandler.java:432) >> >> at >> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java: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) >> >> ------------------------------------------------- >> >> >> > >
