blaze-persistence
blaze-persistence copied to clipboard
Support EclipseLink 2.7.x and 3.x
Currently, Blaze-Persistence does not work with EclipseLink 2.7.x. We should add support for it. While doing that, we should also add support for version 3.x which, according to the issue tracker, should fix some of the issues we have seen so far.
Reproduce issue:
- Upgrade EclipseLink version to 2.7.7
- Run
com.blazebit.persistence.testsuite.ArrayExpressionTest#testSelectParameterIndex - Observe the following exception:
java.lang.IllegalArgumentException: Incompatible persistence configuration getting Metamodel Id Type for the ManagedType [MappedSuperclassTypeImpl@816944408:Ownable [ javaType: class com.blazebit.persistence.testsuite.entity.Ownable descriptor: RelationalDescriptor(com.blazebit.persistence.testsuite.entity.Ownable --> [DatabaseTable(__METAMODEL_RESERVED_IN_MEM_ONLY_TABLE_NAME)]), mappings: 1]].
at org.eclipse.persistence.internal.jpa.metamodel.IdentifiableTypeImpl.getIdType(IdentifiableTypeImpl.java:254)
at com.blazebit.persistence.parser.util.JpaMetamodelUtils.getIdAttributes(JpaMetamodelUtils.java:338)
at com.blazebit.persistence.impl.EntityMetamodelImpl$ExtendedManagedTypeImpl.<init>(EntityMetamodelImpl.java:741)
at com.blazebit.persistence.impl.EntityMetamodelImpl$ExtendedManagedTypeImpl.<init>(EntityMetamodelImpl.java:725)
at com.blazebit.persistence.impl.EntityMetamodelImpl.<init>(EntityMetamodelImpl.java:176)
at com.blazebit.persistence.impl.CriteriaBuilderFactoryImpl.<init>(CriteriaBuilderFactoryImpl.java:109)
at com.blazebit.persistence.impl.CriteriaBuilderConfigurationImpl.createCriteriaBuilderFactory(CriteriaBuilderConfigurationImpl.java:1947)
at com.blazebit.persistence.testsuite.base.jpa.AbstractJpaPersistenceTest.init(AbstractJpaPersistenceTest.java:419)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)