Re: PK Generation and FrontBase

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

I know that FrontbaseSQL is not commonly used but our all apps are based on.

I’ve just :
- created the model explained on the doc https://cayenne.apache.org/docs/3.0/modeling-single-table-inheritance.html
- wrote the code below inside the ‘Application’ class of a simple woapp

But yes, maybe Cayenne is not done to work with FrontbaseSQL… as it works well with PostregSQL.

Thank’s for your answer and have a nice day,

Jérémy

Le 15 avr. 2021 à 22:50, John Huss <[email protected]<mailto:[email protected]>> a écrit :

I don't think FrontBase is very commonly used. I would recommend submitting
a minimal example of the problem and someone should be able to fix the
issue then.

On Thu, Apr 15, 2021 at 3:44 PM Jérémy DE ROYER <[email protected]<mailto:[email protected]>>
wrote:

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]<mailto:[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.