Date   

How to use Queries that do not start with "SELECT" but return a data set?

ebenzacar@...
 

My DBA has prepared some custom SQL queries that he does not want to put into StoredProcs.  So I want to execute them via a normal Query.executeResultList().  However, I noticed that if the query does not start with "SELECT", then DN only returns a boolean "TRUE".  

For instance, the query looks something like the following:

WITH 
 tab1 AS (SELECT 1 col1),
 tab2 AS (SELECT 2 col2)
SELECT
tab1.col1
   ,tab2.col2
FROM tab1
JOIN tab2 ON tab1.col1 <> tab2.col2

 
 
From a quick look at the code, I see that the `org.datanucleus.store.query.Query#executeQuery` first parses the SQL Query to identify if it is a SELECTBULK_UPDATEBULK_DELETEBULK_INSERT or OTHER.  I presume a fix would be to update the `org.datanucleus.store.rdbms.query.SQLQuery` parser to somehow detect this, but it seems like that could be a little difficult to parse appropriately (many edge cases).


Alternatively, is there another JDO way to execute the query and get the result set?  

Thanks,

Eric


Re: How to use PreparedStatements with the Persistence Manager?

ebenzacar@...
 

Thanks for the link.  I had tried a github search for PreparedStatement on the samples repo, but hadn't thought of searching for tests.  I had not realized that the JDOConnection could simply be cast to a Connection; that resolves my issue cleanly.  

Thanks,

Eric


Re: How to use PreparedStatements with the Persistence Manager?

Andy
 
Edited

The JDO spec is public, as is the JDO TCK which will have tests. Also this test.


How to use PreparedStatements with the Persistence Manager?

ebenzacar@...
 
Edited

I have a few pieces of code that use native PreparedStatements, but am having trouble using them in conjunction with the PersistenceManager.  The current approach is:


Connection conn = (Connection)persistenceManager.getDataStoreConnection.getNativeConnection();
PreparedStatement stm = conn.prepareStatement("delete from Athletes where id=?");
stm.setLong(
1, 12345);
stm.execute();
stm.close();
conn.close();


While this works, the problem I have is that when I try to continue to use the PM afterwards, or access any Objects retrieved prior to this snippet of code, I get the following error message:

org.datanucleus.exceptions.NucleusUserException: The Connection was acquired by the developer and must be closed before using the persistence API.
        at org.datanucleus.store.connection.ConnectionManagerImpl.getManagedConnection(ConnectionManagerImpl.java:310)
        at org.datanucleus.store.connection.ConnectionManagerImpl.allocateManagedConnection(ConnectionManagerImpl.java:349)
        at org.datanucleus.store.connection.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:213)
        at org.datanucleus.store.connection.ConnectionManager.getConnection(ConnectionManager.java:62)
        at org.datanucleus.store.rdbms.scostore.JoinSetStore.iterator(JoinSetStore.java:888)
        at org.datanucleus.store.types.wrappers.backed.Set.loadFromStore(Set.java:292)
        at org.datanucleus.store.types.wrappers.backed.Set.iterator(Set.java:468)


I have managed to track the issue down to fact that the NativeConnection is being closed instead of the DataStoreConnection being closed.

Does JDO spec identify/specify the requirements/contract for using PreparedStatements?  Or is this part of the DN implementation only?  Are there any examples that I can review to help identify best practices for using PreparedStatements within DataNucleus (I couldn't find anything in the datanucleus/samples-jdo repo)?  I did find a snippet of code on the DN Persistence pages but I'm not sure if I need to close the native connection as well or not.

If, instead of using the PM.getDataSource().getNativeConnection(), I were to use the PMF to get a brand new PM and new NativeConnection, if I only close the native connection (ie: nativeConnection.close()), will that cause a memory leak?  Am I always required to close the JDOConnection as well?

Thanks,

Eric


Re: Problems with Java 16

claudio_rosati@...
 

Thank you Andy for your reply.

I've modified my master POM file to use the pluginManagement section and magically everything now works (probably there was some wrong dependency somewhere, probably with ASM which now I'll use it in ver. 9.1). Now that DN v6.0.0.m1 is released I'm able to use DN directly from Maven rather than using my local build.

Thank you for your help. If I'll have problems with the new version I'll let you know.


Re: Does JDO provide a hook/trigger to identify a transaction commit/boundary?

Andy
 

Look at JDO spec 13.4.3, you can call
transaction.setSynchronization(...)
and be notified via the (standard) beforeCompletion/afterCompletion methods.

Note that this is for a transaction itself. It will not include NON-TRANSACTIONAL ops which are ... not transactional.


Does JDO provide a hook/trigger to identify a transaction commit/boundary?

ebenzacar@...
 

I'm working on migrating legacy code that was using the OpenJPA Transaction Listener to identify a transaction boundary (commit) to trigger some post-commit functionality.  The logic is a bit messy, but the idea is that after a commit is completed, an MQ message must be published to trigger some asynchronous processing.  It is critical that the MQ message only be published after the commit as the MQ Client only has access to the persisted data and must only be triggered one the commit is confirmed.
`
The legacy code is leveraging the OpenJPA `org.apache.openjpa.event.EndTransactionListener#afterCommit()` listener to trigger the message publishing.

Is there any similar constructs that I can use with JDO?  The closest I have found are the JDO Lifecycle listeners, but those unfortunately provide triggers on the individual objects and not the transaction as a whole.  I noticed that the DN TransactionImpl has listeners n(org.datanucleus.TransactionEventListener) that I could likely leverage, but that would then imply that I need to have dependencies on the Impl instead of just the JDO standard.

Am I overlooking anything?


DN 6.0.0-M1 released

Andy
 

DN v6.0.0.m1 is released.

Notable changes are
  • Minimum Java requirement v11. Upgraded ASM to v9.1 to provide for all current bytecode.
  • Support for Jakarta Persistence v3.0+ API. The JPA API is effectively discontinued at its current v2.2 and it continues life as Jakarta Persistence API. DataNucleus continues to support the JPA API v2.2 for those people who don't want to repackage annotations and API classes for little benefit. For those that want any future benefits from this API they can now make use of Jakarta Persistence API with DataNucleus. You can use metadata (XML/annotations) from any of the persistence specs (JDO, JPA, Jakarta) with any of the persistence API's (JDO, JPA, Jakarta) interchangeably with DataNucleus.
  • Various bug fixes and improvements.

Report any problems in the normal way with associated testcase or, better still, get involved and provide Pull Requests.


Re: Problems with Java 16

Andy
 
Edited

Thanks for the info. Since I don't have Java16, and unlikely to ever have it (not an extended lifetime release AFAIK), I cant confirm or otherwise. You can provide a GitHub pull request for the maven-bundle-plugin, or anything else. I (currently) use Java 11 (for DN v6), so don't meet such things.

No need to rebuild Maven plugin since there is nothing in there post 6.0.0-m1

You need to talk to ASM people if you want to resolve bytecode issues. "datanucleus-core" master branch uses (repackaged) ASM v9.1 (which is the latest version according to https://repo1.maven.org/maven2/org/ow2/asm/asm/ ), so supports what that handles. You could look at the setting of this line; I simply left it unchanged at upgrade of ASM, but likely needs bumping, try it and see


Re: Problems with Java 16

claudio_rosati@...
 

Hello Andy,

I've cloned DataNucleus Core, JDO API plugin, RDBMS plugin, and Maven Plugin, and built them with Java 16.

First problem: DataNucleus Core, JDO API plugin, and RDBMS plugin require the addition of <version>5.1.2</version> to the maven-bundle-plugin to avoid a concurrent modification exception (I think this change is needed from Java 15).

Second problem, I'm still unable to have my project built. The error is the following (I've used the Maven -X option for a bit of debugging info):

--- datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT:enhance (default) @ ginestra.plugins.materials ---
Dependency collection stats {ConflictMarker.analyzeTime=130500, ConflictMarker.markTime=48400, ConflictMarker.nodeCount=26, ConflictIdSorter.graphTime=36900, ConflictIdSorter.topsortTime=19900, ConflictIdSorter.conflictIdCount=16, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=286100, ConflictResolver.conflictItemCount=24, DefaultDependencyCollector.collectTime=49947400, DefaultDependencyCollector.transformTime=544700}
org.datanucleus:datanucleus-maven-plugin:jar:6.0.0-m2-SNAPSHOT
   org.codehaus.plexus:plexus-utils:jar:3.3.0:compile
   org.apache.maven:maven-artifact:jar:3.8.1:compile
      org.apache.commons:commons-lang3:jar:3.8.1:compile
   org.apache.maven:maven-plugin-api:jar:3.8.1:compile
      org.apache.maven:maven-model:jar:3.8.1:compile
      org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4:compile
         javax.enterprise:cdi-api:jar:1.0:compile
            javax.annotation:jsr250-api:jar:1.0:compile
            javax.inject:javax.inject:jar:1:compile
         org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4:compile
         org.codehaus.plexus:plexus-component-annotations:jar:1.5.5:compile
      org.codehaus.plexus:plexus-classworlds:jar:2.6.0:compile
   org.codehaus.plexus:plexus-container-default:jar:2.1.0:compile
      org.apache.xbean:xbean-reflect:jar:3.7:compile
      com.google.collections:google-collections:jar:1.0:compile
Created new class realm plugin>org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT
Importing foreign packages into class realm plugin>org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT
  Imported:  < maven.api
Populating class realm plugin>org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT
  Included: org.datanucleus:datanucleus-maven-plugin:jar:6.0.0-m2-SNAPSHOT
  Included: org.codehaus.plexus:plexus-utils:jar:3.3.0
  Included: org.apache.commons:commons-lang3:jar:3.8.1
  Included: javax.enterprise:cdi-api:jar:1.0
  Included: org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4
  Included: org.codehaus.plexus:plexus-component-annotations:jar:1.5.5
  Included: org.apache.xbean:xbean-reflect:jar:3.7
  Included: com.google.collections:google-collections:jar:1.0
Configuring mojo org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT:enhance from plugin realm ClassRealm[plugin>org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@73d16e93]
Configuring mojo 'org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT:enhance' with basic configurator -->
  (f) alwaysDetachable = false
  (f) api = JDO
  (f) classpathElements = [C:\Users\crosati165522\Projects\ginestra\guijava\ginestra.plugins.module\ginestra.plugins.materials.module\target\classes, C:\Users\crosati165522\.m2\repository\com\vdurmont\semver4j\3.1.0\semver4j-3.1.0.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.db\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.db-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\.m2\repository\org\apache\derby\derby\10.14.2.0\derby-10.14.2.0.jar, C:\Users\crosati165522\.m2\repository\org\datanucleus\javax.jdo\3.2.0-m13\javax.jdo-3.2.0-m13.jar, C:\Users\crosati165522\.m2\repository\javax\transaction\transaction-api\1.1\transaction-api-1.1.jar, C:\Users\crosati165522\.m2\repository\org\datanucleus\datanucleus-core\5.2.7\datanucleus-core-5.2.7.jar, C:\Users\crosati165522\.m2\repository\org\datanucleus\datanucleus-api-jdo\5.2.6\datanucleus-api-jdo-5.2.6.jar, C:\Users\crosati165522\.m2\repository\javax\cache\cache-api\1.1.1\cache-api-1.1.1.jar, C:\Users\crosati165522\.m2\repository\com\github\ben-manes\caffeine\jcache\3.0.2\jcache-3.0.2.jar, C:\Users\crosati165522\.m2\repository\com\github\ben-manes\caffeine\caffeine\3.0.2\caffeine-3.0.2.jar, C:\Users\crosati165522\.m2\repository\com\typesafe\config\1.4.1\config-1.4.1.jar, C:\Users\crosati165522\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar, C:\Users\crosati165522\.m2\repository\org\osgi\org.osgi.service.component.annotations\1.4.0\org.osgi.service.component.annotations-1.4.0.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core\3.3.0-SNAPSHOT-60b1f83a\ginestra.core-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar, C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar, C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar, C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-api\2.0.0-alpha1\slf4j-api-2.0.0-alpha1.jar, C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-nop\2.0.0-alpha1\slf4j-nop-2.0.0-alpha1.jar, C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-simple\2.0.0-alpha1\slf4j-simple-2.0.0-alpha1.jar, C:\Users\crosati165522\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar, C:\Users\crosati165522\.m2\repository\io\reactivex\rxjava3\rxjava\3.0.13-RC4\rxjava-3.0.13-RC4.jar, C:\Users\crosati165522\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar, C:\Users\crosati165522\.m2\repository\com\github\tomtung\latex2unicode_2.11\0.2.6\latex2unicode_2.11-0.2.6.jar, C:\Users\crosati165522\.m2\repository\org\scala-lang\scala-library\2.11.12\scala-library-2.11.12.jar, C:\Users\crosati165522\.m2\repository\com\lihaoyi\fastparse_2.11\1.0.0\fastparse_2.11-1.0.0.jar, C:\Users\crosati165522\.m2\repository\com\lihaoyi\fastparse-utils_2.11\1.0.0\fastparse-utils_2.11-1.0.0.jar, C:\Users\crosati165522\.m2\repository\com\lihaoyi\sourcecode_2.11\0.1.4\sourcecode_2.11-0.1.4.jar, C:\Users\crosati165522\.m2\repository\com\glazedlists\glazedlists\1.11.0\glazedlists-1.11.0.jar, C:\Users\crosati165522\.m2\repository\one\util\streamex\0.7.3\streamex-0.7.3.jar, C:\Users\crosati165522\.m2\repository\org\javatuples\javatuples\1.2\javatuples-1.2.jar, C:\Users\crosati165522\.m2\repository\org\zeroturnaround\zt-zip\1.14\zt-zip-1.14.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.annotations\3.3.0-SNAPSHOT-60b1f83a\ginestra.annotations-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.ui\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.ui-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-text\1.9\commons-text-1.9.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-swing\1.0.1\jiconfont-swing-1.0.1.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont\1.0.0\jiconfont-1.0.0.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-elusive\2.0.3\jiconfont-elusive-2.0.3.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-entypo\2.0.3\jiconfont-entypo-2.0.3.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-font_awesome\4.7.0.1\jiconfont-font_awesome-4.7.0.1.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-google_material_design_icons\2.2.0.2\jiconfont-google_material_design_icons-2.2.0.2.jar, C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-open_iconic\1.1.1.3\jiconfont-open_iconic-1.1.1.3.jar, C:\Users\crosati165522\.m2\repository\org\atteo\evo-inflector\1.2.2\evo-inflector-1.2.2.jar, C:\Users\crosati165522\.m2\repository\com\fifesoft\rsyntaxtextarea\3.1.2\rsyntaxtextarea-3.1.2.jar, C:\Users\crosati165522\.m2\repository\com\jidesoft\jide-oss\3.6.18\jide-oss-3.6.18.jar, C:\Users\crosati165522\.m2\repository\com\miglayout\miglayout-swing\4.2\miglayout-swing-4.2.jar, C:\Users\crosati165522\.m2\repository\com\miglayout\miglayout-core\4.2\miglayout-core-4.2.jar, C:\Users\crosati165522\.m2\repository\org\swinglabs\swingx\swingx-all\1.6.5-1\swingx-all-1.6.5-1.jar, C:\Users\crosati165522\.m2\repository\net\engio\mbassador\1.3.2\mbassador-1.3.2.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.math\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.math-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\synthetica.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaBlackEye.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaGreenDream.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaSimple2D.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaWhiteVision.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaAddons.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaBlackEyeAddon.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaGreenDreamAddon.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaSimple2DAddon.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaWhiteVisionAddon.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaAddonsWithThemes.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jydocking.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jytable.jar, C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jywidgets.jar, C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.graphics3d\3.3.0-SNAPSHOT-60b1f83a\ginestra.graphics3d-3.3.0-SNAPSHOT-60b1f83a.jar, C:\Users\crosati165522\.m2\repository\commons-io\commons-io\2.8.0\commons-io-2.8.0.jar, C:\Users\crosati165522\.m2\repository\org\la4j\la4j\0.6.0\la4j-0.6.0.jar, C:\Users\crosati165522\.m2\repository\com\google\guava\guava\30.1.1-jre\guava-30.1.1-jre.jar, C:\Users\crosati165522\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar, C:\Users\crosati165522\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar, C:\Users\crosati165522\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar, C:\Users\crosati165522\.m2\repository\org\checkerframework\checker-qual\3.8.0\checker-qual-3.8.0.jar, C:\Users\crosati165522\.m2\repository\com\google\errorprone\error_prone_annotations\2.5.1\error_prone_annotations-2.5.1.jar, C:\Users\crosati165522\.m2\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar, C:\Users\crosati165522\.m2\repository\net\sourceforge\jmol\jmol\14.31.10\jmol-14.31.10.jar, C:\ginestra-devenv\VTK-8.1.1\lib\vtk.jar]
  (f) detachListener = false
  (f) fork = false
  (f) generateConstructor = true
  (f) generatePK = true
  (f) ignoreMetaDataForMissingClasses = false
  (f) metadataDirectory = C:\Users\crosati165522\Projects\ginestra\guijava\ginestra.plugins.module\ginestra.plugins.materials.module\target\classes
  (f) metadataIncludes = **/*.jdo, **/*.class
  (f) pluginArtifacts = [org.datanucleus:datanucleus-maven-plugin:maven-plugin:6.0.0-m2-SNAPSHOT:, org.codehaus.plexus:plexus-utils:jar:3.3.0:compile, org.apache.maven:maven-artifact:jar:3.8.1:compile, org.apache.commons:commons-lang3:jar:3.8.1:compile, org.apache.maven:maven-plugin-api:jar:3.8.1:compile, org.apache.maven:maven-model:jar:3.8.1:compile, org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4:compile, javax.enterprise:cdi-api:jar:1.0:compile, javax.annotation:jsr250-api:jar:1.0:compile, javax.inject:javax.inject:jar:1:compile, org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.4:compile, org.codehaus.plexus:plexus-component-annotations:jar:1.5.5:compile, org.codehaus.plexus:plexus-classworlds:jar:2.6.0:compile, org.codehaus.plexus:plexus-container-default:jar:2.1.0:compile, org.apache.xbean:xbean-reflect:jar:3.7:compile, com.google.collections:google-collections:jar:1.0:compile]
  (f) quiet = false
  (f) useFileListFile = auto
  (f) verbose = true
-- end configuration --
Metadata Directory is : C:\Users\crosati165522\Projects\ginestra\guijava\ginestra.plugins.module\ginestra.plugins.materials.module\target\classes
  CP: C:\Users\crosati165522\.m2\repository\org\datanucleus\datanucleus-maven-plugin\6.0.0-m2-SNAPSHOT\datanucleus-maven-plugin-6.0.0-m2-SNAPSHOT.jar
  CP: C:\Users\crosati165522\.m2\repository\org\codehaus\plexus\plexus-utils\3.3.0\plexus-utils-3.3.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\maven\maven-artifact\3.8.1\maven-artifact-3.8.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\maven\maven-plugin-api\3.8.1\maven-plugin-api-3.8.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\maven\maven-model\3.8.1\maven-model-3.8.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\eclipse\sisu\org.eclipse.sisu.plexus\0.3.4\org.eclipse.sisu.plexus-0.3.4.jar
  CP: C:\Users\crosati165522\.m2\repository\javax\enterprise\cdi-api\1.0\cdi-api-1.0.jar
  CP: C:\Users\crosati165522\.m2\repository\javax\annotation\jsr250-api\1.0\jsr250-api-1.0.jar
  CP: C:\Users\crosati165522\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\eclipse\sisu\org.eclipse.sisu.inject\0.3.4\org.eclipse.sisu.inject-0.3.4.jar
  CP: C:\Users\crosati165522\.m2\repository\org\codehaus\plexus\plexus-component-annotations\1.5.5\plexus-component-annotations-1.5.5.jar
  CP: C:\Users\crosati165522\.m2\repository\org\codehaus\plexus\plexus-classworlds\2.6.0\plexus-classworlds-2.6.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\codehaus\plexus\plexus-container-default\2.1.0\plexus-container-default-2.1.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\xbean\xbean-reflect\3.7\xbean-reflect-3.7.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\collections\google-collections\1.0\google-collections-1.0.jar
  CP: C:\Users\crosati165522\Projects\ginestra\guijava\ginestra.plugins.module\ginestra.plugins.materials.module\target\classes
  CP: C:\Users\crosati165522\.m2\repository\com\vdurmont\semver4j\3.1.0\semver4j-3.1.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.db\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.db-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\derby\derby\10.14.2.0\derby-10.14.2.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\datanucleus\javax.jdo\3.2.0-m13\javax.jdo-3.2.0-m13.jar
  CP: C:\Users\crosati165522\.m2\repository\javax\transaction\transaction-api\1.1\transaction-api-1.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\datanucleus\datanucleus-core\5.2.7\datanucleus-core-5.2.7.jar
  CP: C:\Users\crosati165522\.m2\repository\org\datanucleus\datanucleus-api-jdo\5.2.6\datanucleus-api-jdo-5.2.6.jar
  CP: C:\Users\crosati165522\.m2\repository\javax\cache\cache-api\1.1.1\cache-api-1.1.1.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\ben-manes\caffeine\jcache\3.0.2\jcache-3.0.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\ben-manes\caffeine\caffeine\3.0.2\caffeine-3.0.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\typesafe\config\1.4.1\config-1.4.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\osgi\org.osgi.service.component.annotations\1.4.0\org.osgi.service.component.annotations-1.4.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core\3.3.0-SNAPSHOT-60b1f83a\ginestra.core-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-api\2.0.0-alpha1\slf4j-api-2.0.0-alpha1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-nop\2.0.0-alpha1\slf4j-nop-2.0.0-alpha1.jar
  CP: C:\Users\crosati165522\.m2\repository\org\slf4j\slf4j-simple\2.0.0-alpha1\slf4j-simple-2.0.0-alpha1.jar
  CP: C:\Users\crosati165522\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar
  CP: C:\Users\crosati165522\.m2\repository\io\reactivex\rxjava3\rxjava\3.0.13-RC4\rxjava-3.0.13-RC4.jar
  CP: C:\Users\crosati165522\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\tomtung\latex2unicode_2.11\0.2.6\latex2unicode_2.11-0.2.6.jar
  CP: C:\Users\crosati165522\.m2\repository\org\scala-lang\scala-library\2.11.12\scala-library-2.11.12.jar
  CP: C:\Users\crosati165522\.m2\repository\com\lihaoyi\fastparse_2.11\1.0.0\fastparse_2.11-1.0.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\lihaoyi\fastparse-utils_2.11\1.0.0\fastparse-utils_2.11-1.0.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\lihaoyi\sourcecode_2.11\0.1.4\sourcecode_2.11-0.1.4.jar
  CP: C:\Users\crosati165522\.m2\repository\com\glazedlists\glazedlists\1.11.0\glazedlists-1.11.0.jar
  CP: C:\Users\crosati165522\.m2\repository\one\util\streamex\0.7.3\streamex-0.7.3.jar
  CP: C:\Users\crosati165522\.m2\repository\org\javatuples\javatuples\1.2\javatuples-1.2.jar
  CP: C:\Users\crosati165522\.m2\repository\org\zeroturnaround\zt-zip\1.14\zt-zip-1.14.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.annotations\3.3.0-SNAPSHOT-60b1f83a\ginestra.annotations-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.ui\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.ui-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\.m2\repository\org\apache\commons\commons-text\1.9\commons-text-1.9.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-swing\1.0.1\jiconfont-swing-1.0.1.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont\1.0.0\jiconfont-1.0.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-elusive\2.0.3\jiconfont-elusive-2.0.3.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-entypo\2.0.3\jiconfont-entypo-2.0.3.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-font_awesome\4.7.0.1\jiconfont-font_awesome-4.7.0.1.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-google_material_design_icons\2.2.0.2\jiconfont-google_material_design_icons-2.2.0.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\github\jiconfont\jiconfont-open_iconic\1.1.1.3\jiconfont-open_iconic-1.1.1.3.jar
  CP: C:\Users\crosati165522\.m2\repository\org\atteo\evo-inflector\1.2.2\evo-inflector-1.2.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\fifesoft\rsyntaxtextarea\3.1.2\rsyntaxtextarea-3.1.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\jidesoft\jide-oss\3.6.18\jide-oss-3.6.18.jar
  CP: C:\Users\crosati165522\.m2\repository\com\miglayout\miglayout-swing\4.2\miglayout-swing-4.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\miglayout\miglayout-core\4.2\miglayout-core-4.2.jar
  CP: C:\Users\crosati165522\.m2\repository\org\swinglabs\swingx\swingx-all\1.6.5-1\swingx-all-1.6.5-1.jar
  CP: C:\Users\crosati165522\.m2\repository\net\engio\mbassador\1.3.2\mbassador-1.3.2.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.core.math\3.3.0-SNAPSHOT-60b1f83a\ginestra.core.math-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\synthetica.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaBlackEye.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaGreenDream.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaSimple2D.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\syntheticaWhiteVision.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaAddons.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaBlackEyeAddon.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaGreenDreamAddon.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaSimple2DAddon.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaWhiteVisionAddon.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\syntheticaAddonsWithThemes.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jydocking.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jytable.jar
  CP: C:\Users\crosati165522\Projects\ginestra\libs\java\synthetica\addons\jywidgets.jar
  CP: C:\Users\crosati165522\.m2\repository\com\amat\mdlx\ginestra.graphics3d\3.3.0-SNAPSHOT-60b1f83a\ginestra.graphics3d-3.3.0-SNAPSHOT-60b1f83a.jar
  CP: C:\Users\crosati165522\.m2\repository\commons-io\commons-io\2.8.0\commons-io-2.8.0.jar
  CP: C:\Users\crosati165522\.m2\repository\org\la4j\la4j\0.6.0\la4j-0.6.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\guava\guava\30.1.1-jre\guava-30.1.1-jre.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar
  CP: C:\Users\crosati165522\.m2\repository\org\checkerframework\checker-qual\3.8.0\checker-qual-3.8.0.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\errorprone\error_prone_annotations\2.5.1\error_prone_annotations-2.5.1.jar
  CP: C:\Users\crosati165522\.m2\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar
  CP: C:\Users\crosati165522\.m2\repository\net\sourceforge\jmol\jmol\14.31.10\jmol-14.31.10.jar
  CP: C:\ginestra-devenv\VTK-8.1.1\lib\vtk.jar
Java 9 or higher detected. Using modern classloader strategy.
log4j:WARN No appenders could be found for logger (DataNucleus.General).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
DataNucleus Enhancer (version 5.2.7) for API "JDO"
DataNucleus Enhancer : Classpath
>>  C:\ginestra-devenv\maven\apache-maven-3.8.1\bin\..\boot\plexus-classworlds-2.6.0.jar
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time:  11.579 s
Finished at: 2021-05-24T12:09:23+02:00
------------------------------------------------------------------------
Failed to execute goal org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT:enhance (default) on project ginestra.plugins.materials: Error executing DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer: InvocationTargetException: Unsupported class file major version 60 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.datanucleus:datanucleus-maven-plugin:6.0.0-m2-SNAPSHOT:enhance (default) on project ginestra.plugins.materials: Error executing DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer
    at org.datanucleus.maven.AbstractDataNucleusMojo.executeInJvm (AbstractDataNucleusMojo.java:362)
    at org.datanucleus.maven.AbstractEnhancerMojo.enhance (AbstractEnhancerMojo.java:289)
    at org.datanucleus.maven.AbstractEnhancerMojo.executeDataNucleusTool (AbstractEnhancerMojo.java:81)
    at org.datanucleus.maven.AbstractDataNucleusMojo.execute (AbstractDataNucleusMojo.java:126)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.datanucleus.maven.AbstractDataNucleusMojo.executeInJvm (AbstractDataNucleusMojo.java:345)
    at org.datanucleus.maven.AbstractEnhancerMojo.enhance (AbstractEnhancerMojo.java:289)
    at org.datanucleus.maven.AbstractEnhancerMojo.executeDataNucleusTool (AbstractEnhancerMojo.java:81)
    at org.datanucleus.maven.AbstractDataNucleusMojo.execute (AbstractDataNucleusMojo.java:126)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 60
    at org.datanucleus.enhancer.asm.ClassReader.<init> (ClassReader.java:196)
    at org.datanucleus.enhancer.asm.ClassReader.<init> (ClassReader.java:177)
    at org.datanucleus.enhancer.asm.ClassReader.<init> (ClassReader.java:163)
    at org.datanucleus.enhancer.asm.ClassReader.<init> (ClassReader.java:284)
    at org.datanucleus.enhancer.ClassEnhancerImpl.getClassNameForFileName (ClassEnhancerImpl.java:449)
    at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput (DataNucleusEnhancer.java:712)
    at org.datanucleus.enhancer.DataNucleusEnhancer.enhance (DataNucleusEnhancer.java:501)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main (DataNucleusEnhancer.java:1158)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.datanucleus.maven.AbstractDataNucleusMojo.executeInJvm (AbstractDataNucleusMojo.java:345)
    at org.datanucleus.maven.AbstractEnhancerMojo.enhance (AbstractEnhancerMojo.java:289)
    at org.datanucleus.maven.AbstractEnhancerMojo.executeDataNucleusTool (AbstractEnhancerMojo.java:81)
    at org.datanucleus.maven.AbstractDataNucleusMojo.execute (AbstractDataNucleusMojo.java:126)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)


Re: Problems with Java 16

Andy
 

DataNucleus v6 uses latest ASM bytecode handler, which supports whatever is around. DataNucleus v6 is in GitHub.

Obviously it won't be released any time soon ...


Problems with Java 16

claudio_rosati@...
 

Hello all,

I'm migrating from java 8 to Java 16, and building one of my Maven projects fails with the following message:

Failed to execute goal org.datanucleus:datanucleus-maven-plugin:6.0.0-m1:enhance (default) on project ginestra.plugins.materials: Error executing DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer: InvocationTargetException: Unsupported class file major version 60 -> [Help 1]

I'm using datanucleus-maven-plugin at ver. 6.0.0-m1, but datanucleus-rdbms and datanucleus-core at ver. 5.2.7 and datanucleus-api-jdo at ver. 5.2.6 because I've not found a newer versions.

Is DataNucleus ready for Java 16?

Claudio


Plugins branched for v6.0

Andy
 

For anyone developing any DN plugin, the majority are now branched so that "master" is for v6.0.
Use the release branch for whichever version you are developing for


Re: Problems with extra N+1 requests - likely due to poor mapping defns, but not sure how to rectify

ebenzacar@...
 
Edited

Hi @Andy,

I have finally been able to reproduce my error in a test case for you,using the sample app that you provided.  I have created a branch in github repo illustrate the problem. https://github.com/benze/test-jdo/tree/implicit-transaction-errors
Similarly, I have opened an issue in the rdbms module as I suspect it is something specific with the rdbms module (although I may be mistaken): https://github.com/datanucleus/datanucleus-rdbms/issues/369.

I am using an Abstract class with 2 subclass tables as my N-1 relation.  I do see a warning from DN that this is not fully supported so I don't know if that is the root cause, however, oddly enough, it works fine with transaction boundaries explicitly defined.

If, however, I use implicit transactions (and remove the `tx.begin()` and `tx.commit()`), the test fails with an endless loop and generates a StackOverflow issue.  I have traced down the issue into something in the `org.datanucleus.store.rdbms.ConnectionFactoryImpl.ManagedConnectionImpl#release()` as it tries to commitOnRelease, but get a little bit lost in the logic as to why the release is trying to iterate to the end of an open result set instead of just closing the result set as such.

I would be happy to help provide a fix for this, however, I am not able to fully grasp the complete theory behind the existing logic.

Thanks,

Eric


Re: Problems with extra N+1 requests - likely due to poor mapping defns, but not sure how to rectify

ebenzacar@...
 
Edited

On Fri, Apr 30, 2021 at 05:03 AM, Andy wrote:
Alphabetical IIRC

Strange; that doesn't seem to align with my "stuck" index. I tried taking the field list and sorting them alphabetically, but the ~56th alphabetical fieldname doesn't align at with the problematic field.

Do you know if there is a map stored in a MetaData structure somewhere generated by the Enhancer or at load time?  I couldn't find something in the CMD, but figured it has to be floating around somewhere in a structure somewhere?


Thanks,

Eric


Re: Problems with extra N+1 requests - likely due to poor mapping defns, but not sure how to rectify

Andy
 
Edited

Alphabetical IIRC, as shown here and here, clearly the absolute field number would have to allow for inheritance, so starting at the root class.


Re: Problems with extra N+1 requests - likely due to poor mapping defns, but not sure how to rectify

ebenzacar@...
 
Edited

Thanks; will look into that more closely.

Can you give me a pointer where to find the fieldindex -> fieldname mapping?  I was am unable to identify for a certainty which index is which field.   I'm not sure where to look for it.

Thanks,

Eric


Re: JDBC Batch

stephane
 

opensource development on such complex product (closely comparable to database software development) requires a big big expertise on the product design, constraints, ... which I don't have (yet) on DN.

Step by step ...
--
Stephane


Re: JDBC Batch

Andy
 

JDO/JPA API calls are processed in the appropriate order. If a required statement is batchable then it is batched. Referential integrity is always assumed.
https://www.datanucleus.org/products/accessplatform_5_2/datastores/datastores.html#statement_batching

There is no mode to do "all table X followed by all table Y followed by all table Z". Open source ...


Re: JDBC Batch

stephane
 

I mean when performing modifications, do something like:
 -1 set constraints deffered => disable foreign-key, unique constraints, ...
 -2 Batch updates table per table (addBatch, ...)
    - perform all Deletes from table A if any
    - perform all Inserts into table A if any
    - perform all Updates of table A if any

    - perform all Deletes from table B if any
    - perform all Inserts into table B if any
    - perform all Updates of table B if any

    - ...
-3 commit

(Let the constraints are checked at the commit time.)

--
Stephane

1 - 20 of 365