Hello,
Finally I could start personal project which I can use cayenne again after good
time. I'm using the version 4.1 and every table/class were setup through
Cayenne-Modeler, the PK generation strategy is the default one. At the db
generate schema dialog I choose JdbcAdapter because I want the
Cayenne-Generated PK option (image)
As you can see in the image, Cayenne-Modeler doesn't create the sql correctly
for table auto_pk_support, missis the schema.
I discovery this on the first time I've tried to insert in the table and
Cayenne gave an exception about sequence PK_NOTA existence, despite choosing
the default option.
After that I've copied that generated sql, put the schema (corretagem) and
update the database. I'm stoped again, on insert, this time because Cayenne
have not set the ID, throuwing a commit exception:
Caused by: java.lang.reflect.InvocationTargetException
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
at
javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
at
javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1782)
... 47 more
Caused by: org.apache.cayenne.CayenneRuntimeException: [v.4.1 Jul 14 2020
10:26:08] Commit Exception
at
org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:774)
at
org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:691)
at
com.gilbertoca.corretagem.dao.NotaCayenneDao.create(NotaCayenneDao.java:59)
at
com.gilbertoca.corretagem.view.NotaController.salvar(NotaController.java:142)
... 58 more
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not
allowed for column "ID"; SQL statement:
INSERT INTO corretagem.nota (agente_id, corretagem, dt_pregao, emolumentos,
horario, irpf_operacao_base, iss, nr_nota, tx_ana, tx_liquidacao, tx_registro,
tx_termo_opcao_futuro) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [23502-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:459)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:374)
at org.h2.table.Table.validateConvertUpdateSequence(Table.java:845)
at org.h2.command.dml.Insert.insertRows(Insert.java:187)
at org.h2.command.dml.Insert.update(Insert.java:151)
at
org.h2.command.CommandContainer.executeUpdateWithGeneratedKeys(CommandContainer.java:272)
at org.h2.command.CommandContainer.update(CommandContainer.java:191)
at org.h2.command.Command.executeUpdate(Command.java:251)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:191)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:152)
at
org.apache.cayenne.access.jdbc.BatchAction.runAsIndividualQueries(BatchAction.java:171)
at
org.apache.cayenne.access.jdbc.BatchAction.performAction(BatchAction.java:90)
at
org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
at
org.apache.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java:233)
at
org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:153)
at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:624)
at
org.apache.cayenne.access.DataDomain.onSyncNoFilters(DataDomain.java:594)
at
org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:822)
at
org.apache.cayenne.tx.TransactionFilter.lambda$onSync$0(TransactionFilter.java:61)
at
org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:183)
at
org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInNewTransaction(DefaultTransactionManager.java:155)
at
org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:98)
at
org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:65)
at
org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:43)
at
org.apache.cayenne.tx.TransactionFilter.onSync(TransactionFilter.java:61)
at
org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:821)
at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:581)
at
org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:742)
... 61 more
So, I'm here looking for help.
Regards,
Gilberto