You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Francesco Romano <fr...@abodata.com> on 2012/09/06 17:00:34 UTC

Disable of auto-generated pk

Hi everybody.

I have a problem with cayenne.
I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).

The problem is that I have this exception during execution:

[06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
	at java.util.TimerThread.mainLoop(Timer.java:512)
	at java.util.TimerThread.run(Timer.java:462)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.Util.getInstance(Util.java:381)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
	... 7 more

But.. date is written into db!!
This is the db-entity and obj-entity for the table 

<db-entity name="TotalLatencyStat">
		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
	</db-entity>

<obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
	</obj-entity>

I don't understand the exception above!
I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
generatesKeys is false. I also put a breakpoint inside the then-block of
if (generatesKeys) {
      processGeneratedKeys(statement, delegate);
}
and it is never fired!

I add that I use Cayenne 3.0

Thanks 

Francesco Romano



Re: Disable of auto-generated pk

Posted by Francesco Romano <fr...@abodata.com>.
I'm trying with 3.1 beta..

I have (obviously) problems with the classloading. The cayenne "bundle" tries to load my auto-generated classes...
Do you have any ideas how to manage this?
The "responsible" class is DefaultAdhocObjectFactory class...
Should I have to create a sort of class registry?
Or are there any better options?

Francesco

On Sep 7, 2012, at 4:50 PM, Andrus Adamchik wrote:

>> I can't update to cayenne 3.1 (btw.. is it stable? I could not find the information on the site, but the branch is marked as STABLE)
> 
> Yes, it is in Beta, meaning complete API freeze and only bugfix related changes.
> 
>> I downloaded the sources of cayenne 3.0, compiled with maven (from command line), then imported the projects into eclispe, but... they are all "red".. eclipse can't resolve javax.persistence..
> 
> I really recommend 3.1. It doesn't have all the JPA baggage of 3.0. 
> 
> Andrus
> 
> On Sep 7, 2012, at 4:20 PM, Francesco Romano wrote:
> 
>> I've already seen those pages..
>> So there is nothing "ready"....
>> 
>> Further more.. I can't update to cayenne 3.1 (btw.. is it stable? I could not find the information on the site, but the branch is marked as STABLE)...
>> 
>> I downloaded the sources of cayenne 3.0, compiled with maven (from command line), then imported the projects into eclispe, but... they are all "red".. eclipse can't resolve javax.persistence..
>> 
>> Any ideas?
>> Thank you
>> Francesco
>> 
>> On Sep 7, 2012, at 1:11 PM, Andrus Adamchik wrote:
>> 
>>>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
>>> 
>>> 
>>> I wish I'd get myself into an OSGi project to have some motivation to familiarize myself with OSGi-related issues :) For now, there are various degrees of interest and an intent to help from different folks, but nothing specific as of yet: 
>>> 
>>> http://markmail.org/message/n7licqa27qdecfzy
>>> http://markmail.org/message/admkhniktnvnfid5
>>> 
>>> Andrus
>>> 
>>> 
>>> 
>>> On Sep 7, 2012, at 10:45 AM, Francesco Romano wrote:
>>>> Ok.. I found the problem.. It is not related to Cayenne, but to our environment.
>>>> 
>>>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
>>>> 
>>>> Francesco
>>>> 
>>>> On Sep 6, 2012, at 5:00 PM, Francesco Romano wrote:
>>>> 
>>>>> Hi everybody.
>>>>> 
>>>>> I have a problem with cayenne.
>>>>> I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).
>>>>> 
>>>>> The problem is that I have this exception during execution:
>>>>> 
>>>>> [06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
>>>>> org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
>>>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
>>>>> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
>>>>> 	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
>>>>> 	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
>>>>> 	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
>>>>> 	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
>>>>> 	at java.util.TimerThread.mainLoop(Timer.java:512)
>>>>> 	at java.util.TimerThread.run(Timer.java:462)
>>>>> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
>>>>> 	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
>>>>> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>>>> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
>>>>> 	at com.mysql.jdbc.Util.getInstance(Util.java:381)
>>>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
>>>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
>>>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
>>>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
>>>>> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
>>>>> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
>>>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
>>>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
>>>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
>>>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
>>>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
>>>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
>>>>> 	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
>>>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
>>>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
>>>>> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
>>>>> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
>>>>> 	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
>>>>> 	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>>>>> 	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
>>>>> 	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
>>>>> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>>>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
>>>>> 	... 7 more
>>>>> 
>>>>> But.. date is written into db!!
>>>>> This is the db-entity and obj-entity for the table 
>>>>> 
>>>>> <db-entity name="TotalLatencyStat">
>>>>> 		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>>> 		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
>>>>> 		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
>>>>> 		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
>>>>> 		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
>>>>> 		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
>>>>> 		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>>> 		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>>> 		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
>>>>> 	</db-entity>
>>>>> 
>>>>> <obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
>>>>> 		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
>>>>> 		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
>>>>> 		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
>>>>> 		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
>>>>> 		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
>>>>> 		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
>>>>> 		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
>>>>> 		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
>>>>> 		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
>>>>> 	</obj-entity>
>>>>> 
>>>>> I don't understand the exception above!
>>>>> I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
>>>>> generatesKeys is false. I also put a breakpoint inside the then-block of
>>>>> if (generatesKeys) {
>>>>>  processGeneratedKeys(statement, delegate);
>>>>> }
>>>>> and it is never fired!
>>>>> 
>>>>> I add that I use Cayenne 3.0
>>>>> 
>>>>> Thanks 
>>>>> 
>>>>> Francesco Romano
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 


Re: Disable of auto-generated pk

Posted by Andrus Adamchik <an...@objectstyle.org>.
>  I can't update to cayenne 3.1 (btw.. is it stable? I could not find the information on the site, but the branch is marked as STABLE)

Yes, it is in Beta, meaning complete API freeze and only bugfix related changes.

> I downloaded the sources of cayenne 3.0, compiled with maven (from command line), then imported the projects into eclispe, but... they are all "red".. eclipse can't resolve javax.persistence..

I really recommend 3.1. It doesn't have all the JPA baggage of 3.0. 

Andrus

On Sep 7, 2012, at 4:20 PM, Francesco Romano wrote:

> I've already seen those pages..
> So there is nothing "ready"....
> 
> Further more.. I can't update to cayenne 3.1 (btw.. is it stable? I could not find the information on the site, but the branch is marked as STABLE)...
> 
> I downloaded the sources of cayenne 3.0, compiled with maven (from command line), then imported the projects into eclispe, but... they are all "red".. eclipse can't resolve javax.persistence..
> 
> Any ideas?
> Thank you
> Francesco
> 
> On Sep 7, 2012, at 1:11 PM, Andrus Adamchik wrote:
> 
>>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
>> 
>> 
>> I wish I'd get myself into an OSGi project to have some motivation to familiarize myself with OSGi-related issues :) For now, there are various degrees of interest and an intent to help from different folks, but nothing specific as of yet: 
>> 
>> http://markmail.org/message/n7licqa27qdecfzy
>> http://markmail.org/message/admkhniktnvnfid5
>> 
>> Andrus
>> 
>> 
>> 
>> On Sep 7, 2012, at 10:45 AM, Francesco Romano wrote:
>>> Ok.. I found the problem.. It is not related to Cayenne, but to our environment.
>>> 
>>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
>>> 
>>> Francesco
>>> 
>>> On Sep 6, 2012, at 5:00 PM, Francesco Romano wrote:
>>> 
>>>> Hi everybody.
>>>> 
>>>> I have a problem with cayenne.
>>>> I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).
>>>> 
>>>> The problem is that I have this exception during execution:
>>>> 
>>>> [06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
>>>> org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
>>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
>>>> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
>>>> 	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
>>>> 	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
>>>> 	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
>>>> 	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
>>>> 	at java.util.TimerThread.mainLoop(Timer.java:512)
>>>> 	at java.util.TimerThread.run(Timer.java:462)
>>>> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
>>>> 	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
>>>> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>>> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
>>>> 	at com.mysql.jdbc.Util.getInstance(Util.java:381)
>>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
>>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
>>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
>>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
>>>> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
>>>> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
>>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
>>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
>>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
>>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
>>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
>>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
>>>> 	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
>>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
>>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
>>>> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
>>>> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
>>>> 	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
>>>> 	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>>>> 	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
>>>> 	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
>>>> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
>>>> 	... 7 more
>>>> 
>>>> But.. date is written into db!!
>>>> This is the db-entity and obj-entity for the table 
>>>> 
>>>> <db-entity name="TotalLatencyStat">
>>>> 		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>> 		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
>>>> 		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
>>>> 		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
>>>> 		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
>>>> 		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
>>>> 		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>> 		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>>> 		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
>>>> 	</db-entity>
>>>> 
>>>> <obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
>>>> 		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
>>>> 		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
>>>> 		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
>>>> 		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
>>>> 		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
>>>> 		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
>>>> 		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
>>>> 		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
>>>> 		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
>>>> 	</obj-entity>
>>>> 
>>>> I don't understand the exception above!
>>>> I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
>>>> generatesKeys is false. I also put a breakpoint inside the then-block of
>>>> if (generatesKeys) {
>>>>   processGeneratedKeys(statement, delegate);
>>>> }
>>>> and it is never fired!
>>>> 
>>>> I add that I use Cayenne 3.0
>>>> 
>>>> Thanks 
>>>> 
>>>> Francesco Romano
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 


Re: Disable of auto-generated pk

Posted by Francesco Romano <fr...@abodata.com>.
I've already seen those pages..
So there is nothing "ready"....

Further more.. I can't update to cayenne 3.1 (btw.. is it stable? I could not find the information on the site, but the branch is marked as STABLE)...

I downloaded the sources of cayenne 3.0, compiled with maven (from command line), then imported the projects into eclispe, but... they are all "red".. eclipse can't resolve javax.persistence..

Any ideas?
Thank you
Francesco

On Sep 7, 2012, at 1:11 PM, Andrus Adamchik wrote:

>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
> 
> 
> I wish I'd get myself into an OSGi project to have some motivation to familiarize myself with OSGi-related issues :) For now, there are various degrees of interest and an intent to help from different folks, but nothing specific as of yet: 
> 
> http://markmail.org/message/n7licqa27qdecfzy
> http://markmail.org/message/admkhniktnvnfid5
> 
> Andrus
> 
> 
> 
> On Sep 7, 2012, at 10:45 AM, Francesco Romano wrote:
>> Ok.. I found the problem.. It is not related to Cayenne, but to our environment.
>> 
>> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
>> 
>> Francesco
>> 
>> On Sep 6, 2012, at 5:00 PM, Francesco Romano wrote:
>> 
>>> Hi everybody.
>>> 
>>> I have a problem with cayenne.
>>> I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).
>>> 
>>> The problem is that I have this exception during execution:
>>> 
>>> [06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
>>> org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
>>> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
>>> 	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
>>> 	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
>>> 	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
>>> 	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
>>> 	at java.util.TimerThread.mainLoop(Timer.java:512)
>>> 	at java.util.TimerThread.run(Timer.java:462)
>>> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
>>> 	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
>>> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
>>> 	at com.mysql.jdbc.Util.getInstance(Util.java:381)
>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
>>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
>>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
>>> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
>>> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
>>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
>>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
>>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
>>> 	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
>>> 	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
>>> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
>>> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
>>> 	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
>>> 	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>>> 	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
>>> 	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
>>> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
>>> 	... 7 more
>>> 
>>> But.. date is written into db!!
>>> This is the db-entity and obj-entity for the table 
>>> 
>>> <db-entity name="TotalLatencyStat">
>>> 		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>> 		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
>>> 		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
>>> 		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
>>> 		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
>>> 		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
>>> 		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>> 		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>>> 		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
>>> 	</db-entity>
>>> 
>>> <obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
>>> 		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
>>> 		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
>>> 		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
>>> 		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
>>> 		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
>>> 		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
>>> 		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
>>> 		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
>>> 		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
>>> 	</obj-entity>
>>> 
>>> I don't understand the exception above!
>>> I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
>>> generatesKeys is false. I also put a breakpoint inside the then-block of
>>> if (generatesKeys) {
>>>    processGeneratedKeys(statement, delegate);
>>> }
>>> and it is never fired!
>>> 
>>> I add that I use Cayenne 3.0
>>> 
>>> Thanks 
>>> 
>>> Francesco Romano
>>> 
>>> 
>> 
>> 
> 
> 


Re: Disable of auto-generated pk

Posted by Andrus Adamchik <an...@objectstyle.org>.
> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?


I wish I'd get myself into an OSGi project to have some motivation to familiarize myself with OSGi-related issues :) For now, there are various degrees of interest and an intent to help from different folks, but nothing specific as of yet: 

http://markmail.org/message/n7licqa27qdecfzy
http://markmail.org/message/admkhniktnvnfid5

Andrus



On Sep 7, 2012, at 10:45 AM, Francesco Romano wrote:
> Ok.. I found the problem.. It is not related to Cayenne, but to our environment.
> 
> So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?
> 
> Francesco
> 
> On Sep 6, 2012, at 5:00 PM, Francesco Romano wrote:
> 
>> Hi everybody.
>> 
>> I have a problem with cayenne.
>> I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).
>> 
>> The problem is that I have this exception during execution:
>> 
>> [06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
>> org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
>> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
>> 	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
>> 	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
>> 	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
>> 	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
>> 	at java.util.TimerThread.mainLoop(Timer.java:512)
>> 	at java.util.TimerThread.run(Timer.java:462)
>> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
>> 	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
>> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
>> 	at com.mysql.jdbc.Util.getInstance(Util.java:381)
>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
>> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
>> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
>> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
>> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
>> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
>> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
>> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
>> 	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
>> 	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
>> 	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
>> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
>> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
>> 	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
>> 	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>> 	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
>> 	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
>> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
>> 	... 7 more
>> 
>> But.. date is written into db!!
>> This is the db-entity and obj-entity for the table 
>> 
>> <db-entity name="TotalLatencyStat">
>> 		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>> 		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
>> 		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
>> 		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
>> 		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
>> 		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
>> 		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>> 		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
>> 		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
>> 	</db-entity>
>> 
>> <obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
>> 		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
>> 		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
>> 		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
>> 		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
>> 		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
>> 		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
>> 		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
>> 		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
>> 		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
>> 	</obj-entity>
>> 
>> I don't understand the exception above!
>> I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
>> generatesKeys is false. I also put a breakpoint inside the then-block of
>> if (generatesKeys) {
>>     processGeneratedKeys(statement, delegate);
>> }
>> and it is never fired!
>> 
>> I add that I use Cayenne 3.0
>> 
>> Thanks 
>> 
>> Francesco Romano
>> 
>> 
> 
> 


Re: Disable of auto-generated pk

Posted by Francesco Romano <fr...@abodata.com>.
Ok.. I found the problem.. It is not related to Cayenne, but to our environment.

So.. the question becomes: how can I integrate Cayenne in an OSGi Environmnet?

Francesco

On Sep 6, 2012, at 5:00 PM, Francesco Romano wrote:

> Hi everybody.
> 
> I have a problem with cayenne.
> I migrated a table from having a PK autogenerated by the db on a field ID, to a table without autogenerated pks (now my PK is a multi-column table).
> 
> The problem is that I have this exception during execution:
> 
> [06Sep 16:55:16,714] (CommitObjects@295) WARN  KPIServiceImpl - Error committing kpiManager.TotalLatencyStat
> org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 09:59:17] Commit Exception
> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134)
> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045)
> 	at kpi.impl.KPIServiceImpl.CommitObjects(KPIServiceImpl.java:285)
> 	at kpi.impl.KPIServiceImpl.saveObj(KPIServiceImpl.java:2518)
> 	at impl.KPIServiceImpl.addTotalLatencyStat(KPIServiceImpl.java:989)
> 	at timertask.JMSMsgStatKPITimerTask.run(JMSMsgStatKPITimerTask.java:47)
> 	at java.util.TimerThread.mainLoop(Timer.java:512)
> 	at java.util.TimerThread.run(Timer.java:462)
> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'kpidb.auto_pk_support' doesn't exist
> 	at sun.reflect.GeneratedConstructorAccessor143.newInstance(Unknown Source)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
> 	at com.mysql.jdbc.Util.getInstance(Util.java:381)
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:741)
> 	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:587)
> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.getLongPrimaryKey(MySQLPkGenerator.java:305)
> 	at org.apache.cayenne.dba.mysql.MySQLPkGenerator.longPkFromDatabase(MySQLPkGenerator.java:81)
> 	at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:270)
> 	at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:165)
> 	at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
> 	at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:79)
> 	at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:182)
> 	at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:134)
> 	at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
> 	at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
> 	at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
> 	at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1106)
> 	... 7 more
> 
> But.. date is written into db!!
> This is the db-entity and obj-entity for the table 
> 
> <db-entity name="TotalLatencyStat">
> 		<db-attribute name="DataType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
> 		<db-attribute name="LatencyMax" type="INTEGER" isMandatory="true"/>
> 		<db-attribute name="LatencyMin" type="INTEGER" isMandatory="true"/>
> 		<db-attribute name="LatencySum" type="INTEGER" isMandatory="true"/>
> 		<db-attribute name="MacAddress" type="VARBINARY" isPrimaryKey="true" isMandatory="true" length="128"/>
> 		<db-attribute name="MsgNumber" type="INTEGER" isMandatory="true"/>
> 		<db-attribute name="NetworkID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
> 		<db-attribute name="ServiceType" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
> 		<db-attribute name="Timestamp" type="BIGINT" isPrimaryKey="true" isMandatory="true"/>
> 	</db-entity>
> 
> <obj-entity name="TotalLatencyStat" className="com.abodata.plat1.kpiManager.TotalLatencyStat" lock-type="optimistic" dbEntityName="TotalLatencyStat">
> 		<obj-attribute name="dataType" type="int" db-attribute-path="DataType"/>
> 		<obj-attribute name="latencyMax" type="int" db-attribute-path="LatencyMax"/>
> 		<obj-attribute name="latencyMin" type="int" db-attribute-path="LatencyMin"/>
> 		<obj-attribute name="latencySum" type="int" db-attribute-path="LatencySum"/>
> 		<obj-attribute name="macAddress" type="byte[]" db-attribute-path="MacAddress"/>
> 		<obj-attribute name="msgNumber" type="int" db-attribute-path="MsgNumber"/>
> 		<obj-attribute name="networkID" type="int" db-attribute-path="NetworkID"/>
> 		<obj-attribute name="serviceType" type="int" db-attribute-path="ServiceType"/>
> 		<obj-attribute name="timestamp" type="long" db-attribute-path="Timestamp"/>
> 	</obj-entity>
> 
> I don't understand the exception above!
> I also tried to put a breakpoint in the source code of cayenne, in particular in BatchAction.runAsIndividualQueries.
> generatesKeys is false. I also put a breakpoint inside the then-block of
> if (generatesKeys) {
>      processGeneratedKeys(statement, delegate);
> }
> and it is never fired!
> 
> I add that I use Cayenne 3.0
> 
> Thanks 
> 
> Francesco Romano
> 
>