Re: Cayenne-Generated PK (NULL not allowed for column "ID")

Gilberto Caetano de Andrade <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <pony-d3aad6f73c8a3c2b862b5f63dc1c82e1999e6ebd-8603b4b962d884288354c06eb6cefa6311fd138d@user.cayenne.apache.org>
The image: https://www.dropbox.com/s/t3swzbn4fzrfyqb/CayenneModelerPkGeneration.png?dl=0

On 2021/03/29 19:08:11, Gilberto Caetano de Andrade <[email protected]> wrote: 
> 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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.