Re: PK Generation and FrontBase

Jérémy DE ROYER <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <[email protected]>
Hello,

I switched my model from FrontBase to PostgreSQL and it works great.

Does someone use Cayenne 4.1 with FrontbaseSQL successfully ?

Is there something specific to know ?

Thank’s for any tip,

Jérémy

> Le 14 avr. 2021 à 23:05, Jérémy DE ROYER <[email protected]> a écrit :
> 
> Hi all,
> 
> I’m trying to find a solution for the (temporary ?) lack of horizontal inheritance so I did model vertical inheritance following :
> 
> https://cayenne.apache.org/docs/3.0/modeling-vertical-inheritance.html
> 
> using a Frontbase database.
> 
> I did :
> - create the model,
> - generate the database,
> - fix lack of jars and other things like username, password, jdbc driver
> 
> The demo code below starts well and connects to database...
> 
> try {
> ServerRuntime cayenneRuntime = ServerRuntime.builder()
> .addConfig("cayenne-CayenneTest.xml")
> .build();
> 
> ObjectContext context = cayenneRuntime.newContext();
> 
> Book _newBook = context.newObject(Book.class);
> _newBook.setTitle("Nouveau Book");
> _newBook.setCreated(new Date());
> 
> context.commitChanges();
> 
> EBook _newEBook = context.newObject(EBook.class);
> _newEBook.setTitle("Nouveau EBook");
> _newEBook.setCreated(new Date());
> _newEBook.setDownloadUrl("https://www.google.fr/");
> 
> context.commitChanges();
> 
> PaperBook _newPaperBook = context.newObject(PaperBook.class);
> _newPaperBook.setTitle("Nouveau PaperBook");
> _newPaperBook.setCreated(new Date());
> _newPaperBook.setShippingWeight(1000);
> 
> context.commitChanges();
> 
> List<Book> _books = ObjectSelect.query(Book.class).select(context);
> 
> System.out.println("** ALL **");
> 
> for (Book currentBook : _books)
> {
> System.out.println(currentBook.getTitle() + " created on " + currentBook.getCreated());
> }
> }
> catch (Exception e) {
> System.out.println("An error occured : " + e.getMessage());
> e.printStackTrace();
> }
> 
> …but throws this exception
> 
> An error occured : [v.4.1 Jul 14 2020 10:40:45] Commit Exception
> org.apache.cayenne.CayenneRuntimeException: [v.4.1 Jul 14 2020 10:40:45] Commit Exception
> at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:774)
> at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:691)
> at your.app.Application.<init>(Application.java:50)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at java.lang.Class.newInstance(Class.java:442)
> at com.webobjects.appserver.WOApplication.main(WOApplication.java:547)
> at your.app.Application.main(Application.java:25)
> Caused by: java.lang.NullPointerException
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:242)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.runWithNamedParametersBatch(SQLTemplateAction.java:179)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:111)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
> at org.apache.cayenne.dba.frontbase.FrontBasePkGenerator.longPkFromDatabase(FrontBasePkGenerator.java:143)
> at org.apache.cayenne.dba.JdbcPkGenerator.generatePk(JdbcPkGenerator.java:220)
> at org.apache.cayenne.access.DataDomainInsertBucket.createPermIds(DataDomainInsertBucket.java:168)
> at org.apache.cayenne.access.DataDomainInsertBucket.appendQueriesInternal(DataDomainInsertBucket.java:76)
> at org.apache.cayenne.access.DataDomainSyncBucket.appendQueries(DataDomainSyncBucket.java:78)
> at org.apache.cayenne.access.DataDomainFlushAction.preprocess(DataDomainFlushAction.java:185)
> at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:143)
> 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)
> ... 9 more
> 
> It seem’s to be related to pk generation so I try a select unqiue from Book in FrontBase and it worked lije a charm.
> 
> Any idea ?
> 
> Many thank’s,
> 
> Jérémy
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.