Hi Jérémy,

I've never used it, but Andrus (and others) have a project called LinkMove
which may work:

https://github.com/nhl/link-move

I don't see a way to re-use a Cayenne model as the source AND the target,
but perhaps that is also an option (instead of the XML source), too.


On Fri, Apr 16, 2021 at 4:14 AM Jérémy DE ROYER <jeremy.dero...@ingencys.net>
wrote:

> Sorry, please read
>
> « Migrate from FrontbaseSQL to PostgreSQL »  😄
>
> Jérémy
>
> > Le 16 avr. 2021 à 10:04, Jérémy DE ROYER <jeremy.dero...@ingencys.net>
> a écrit :
> >
> > Hi Hugi,
> >
> > Unfortunately, I think you’re right.
> >
> > I wanted to leave FrontbaseSQL too but as Andrus say, the meeting in
> Frankfurt help me to resolve some cases and finally we keep our softwares
> using FrontbaseSQL.
> >
> > According to your experience, is there an easy way to migrate/transfert
> from PostgreSQL to FrontBaseSQL ?
> >
> > It could respond to the request from developers to have access to
> programming tools with the database, not offered by FrontbaseSQL.
> >
> > Thank’s for this highlight,
> >
> > Jérémy
> >
> >> Le 16 avr. 2021 à 09:53, Hugi Thordarson <h...@karlmenn.is> a écrit :
> >>
> >> Hi Jérémy,
> >>
> >> I believe you hit a bug in the FrontBase JDBC driver:
> >> https://issues.apache.org/jira/browse/CAY-2574 <
> https://issues.apache.org/jira/browse/CAY-2574>
> >>
> >> Andrus wrote to FrontBase about this after our Frankfurt meetup:
> >>
> https://mail-archives.apache.org/mod_mbox/cayenne-dev/201905.mbox/%3C52EC2486-4736-4854-AE49-A7CF77904E52%40objectstyle.org%3E
> <https://mail-archives.apache.org/mod_mbox/cayenne-dev/201905.mbox/browser
> >
> >>
> >> I haven't seen anything from FB about this since this thread, perhaps
> you should give their support a check?
> >> I also wrote to them last year about their JDBC driver not working on
> more recent Java versions, but don't think they've fixed it. I ended up
> migrating that one last FrontBase app to Postgres.
> >>
> >> Cheers,
> >> - hugi
> >>
> >>
> >>
> >>> On 15 Apr 2021, at 20:59, Jérémy DE ROYER <jeremy.dero...@ingencys.net>
> wrote:
> >>>
> >>> 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 <johnth...@gmail.com<mailto:
> johnth...@gmail.com>> 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 <
> jeremy.dero...@ingencys.net<mailto:jeremy.dero...@ingencys.net>>
> >>> 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 <jeremy.dero...@ingencys.net
> <mailto:jeremy.dero...@ingencys.net>>
> >>> 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
> >>>
> >>>
> >>>
> >>
> >
>
>

Reply via email to