diff --git a/ci/quarkus.Jenkinsfile b/ci/quarkus.Jenkinsfile
index 1a3ec6bb992d..4c0d65e93537 100644
--- a/ci/quarkus.Jenkinsfile
+++ b/ci/quarkus.Jenkinsfile
@@ -32,7 +32,7 @@ pipeline {
script {
dir('hibernate') {
checkout scm
- sh "./gradlew publishToMavenLocal -PmavenMirror=nexus-load-balancer-c4cf05fd92f43ef8.elb.us-east-1.amazonaws.com --no-daemon -Dmaven.repo.local=${env.WORKSPACE}/.m2repository"
+ sh "./gradlew clean publishToMavenLocal -x test --no-scan --no-daemon --no-build-cache --stacktrace -PmavenMirror=nexus-load-balancer-c4cf05fd92f43ef8.elb.us-east-1.amazonaws.com -Dmaven.repo.local=${env.WORKSPACE}/.m2repository"
script {
env.HIBERNATE_VERSION = sh (
script: "grep hibernateVersion gradle/version.properties|cut -d'=' -f2",
@@ -42,7 +42,12 @@ pipeline {
}
dir('quarkus') {
sh "git clone -b 3.15 --single-branch https://github.com/quarkusio/quarkus.git . || git reset --hard && git clean -fx && git pull"
- sh "sed -i 's@.*@${env.HIBERNATE_VERSION}@' bom/application/pom.xml"
+ script {
+ def sedStatus = sh (script: "sed -i 's@.*@${env.HIBERNATE_VERSION}@' pom.xml", returnStatus: true)
+ if ( sedStatus != 0 ) {
+ throw new IllegalArgumentException( "Unable to replace hibernate version in Quarkus pom. Got exit code $sedStatus" )
+ }
+ }
// Need to override the default maven configuration this way, because there is no other way to do it
sh "sed -i 's/-Xmx5g/-Xmx2048m/' ./.mvn/jvm.config"
sh "echo -e '\\n-XX:MaxMetaspaceSize=1024m'>>./.mvn/jvm.config"
diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/Compatibility.java b/hibernate-core/src/main/java/org/hibernate/cfg/Compatibility.java
index 5033b5e14582..812a18c8335d 100644
--- a/hibernate-core/src/main/java/org/hibernate/cfg/Compatibility.java
+++ b/hibernate-core/src/main/java/org/hibernate/cfg/Compatibility.java
@@ -19,7 +19,7 @@
* considered temporary and are usually also {@linkplain Deprecated deprecated}.
*/
@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
+@Retention(RetentionPolicy.CLASS)
@Documented
public @interface Compatibility {
}
diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/Unsafe.java b/hibernate-core/src/main/java/org/hibernate/cfg/Unsafe.java
index 244b20cdb5f0..ca9056957d72 100644
--- a/hibernate-core/src/main/java/org/hibernate/cfg/Unsafe.java
+++ b/hibernate-core/src/main/java/org/hibernate/cfg/Unsafe.java
@@ -18,7 +18,7 @@
* are largely considered unsupported.
*/
@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
+@Retention(RetentionPolicy.CLASS)
@Documented
public @interface Unsafe {
}
diff --git a/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java b/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java
index 1c943c33c10c..5ed94e2cae28 100644
--- a/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java
+++ b/hibernate-core/src/main/java/org/hibernate/sql/results/graph/entity/internal/EntityInitializerImpl.java
@@ -133,6 +133,7 @@ public class EntityInitializerImpl extends AbstractInitializer rowIdAssembler;
private final DomainResultAssembler>[][] assemblers;
+ private final @Nullable Initializer>[] allInitializers;
private final @Nullable Initializer>[][] subInitializers;
private final @Nullable Initializer>[][] subInitializersForResolveFromInitialized;
private final @Nullable Initializer>[][] collectionContainingSubInitializers;
@@ -279,8 +280,10 @@ public EntityInitializerImpl(
? rowIdResult.createResultAssembler( this, creationState )
: null;
+ final int fetchableCount = entityDescriptor.getNumberOfFetchables();
final Collection subMappingTypes = rootEntityDescriptor.getSubMappingTypes();
final DomainResultAssembler>[][] assemblers = new DomainResultAssembler[subMappingTypes.size() + 1][];
+ final Initializer>[] allInitializers = new Initializer>[fetchableCount];
final Initializer>[][] subInitializers = new Initializer>[subMappingTypes.size() + 1][];
final Initializer>[][] eagerSubInitializers = new Initializer>[subMappingTypes.size() + 1][];
final Initializer>[][] collectionContainingSubInitializers = new Initializer>[subMappingTypes.size() + 1][];
@@ -296,8 +299,7 @@ public EntityInitializerImpl(
}
boolean hasLazySubInitializers = false;
- final int size = entityDescriptor.getNumberOfFetchables();
- for ( int i = 0; i < size; i++ ) {
+ for ( int i = 0; i < fetchableCount; i++ ) {
final AttributeMapping attributeMapping = entityDescriptor.getFetchable( i ).asAttributeMapping();
final Fetch fetch = resultDescriptor.findFetch( attributeMapping );
final DomainResultAssembler> stateAssembler = fetch == null
@@ -310,12 +312,13 @@ public EntityInitializerImpl(
final Initializer> subInitializer = stateAssembler.getInitializer();
if ( subInitializer != null ) {
+ allInitializers[i] = subInitializer;
if ( subInitializers[subclassId] == null ) {
- subInitializers[subclassId] = new Initializer>[size];
- eagerSubInitializers[subclassId] = new Initializer>[size];
- collectionContainingSubInitializers[subclassId] = new Initializer>[size];
- lazySets[subclassId] = new BitSet( size );
- maybeLazySets[subclassId] = new BitSet( size );
+ subInitializers[subclassId] = new Initializer>[fetchableCount];
+ eagerSubInitializers[subclassId] = new Initializer>[fetchableCount];
+ collectionContainingSubInitializers[subclassId] = new Initializer>[fetchableCount];
+ lazySets[subclassId] = new BitSet( fetchableCount );
+ maybeLazySets[subclassId] = new BitSet( fetchableCount );
}
subInitializers[subclassId][stateArrayPosition] = subInitializer;
if ( subInitializer.isEager() ) {
@@ -349,11 +352,11 @@ public EntityInitializerImpl(
updatableAttributeMutabilityPlans[subMappingType.getSubclassId()][stateArrayPosition] = updatableAttributeMutabilityPlans[subclassId][stateArrayPosition];
if ( subInitializer != null ) {
if ( subInitializers[subMappingType.getSubclassId()] == null ) {
- subInitializers[subMappingType.getSubclassId()] = new Initializer>[size];
- eagerSubInitializers[subMappingType.getSubclassId()] = new Initializer>[size];
- collectionContainingSubInitializers[subMappingType.getSubclassId()] = new Initializer>[size];
- lazySets[subMappingType.getSubclassId()] = new BitSet(size);
- maybeLazySets[subMappingType.getSubclassId()] = new BitSet(size);
+ subInitializers[subMappingType.getSubclassId()] = new Initializer>[fetchableCount];
+ eagerSubInitializers[subMappingType.getSubclassId()] = new Initializer>[fetchableCount];
+ collectionContainingSubInitializers[subMappingType.getSubclassId()] = new Initializer>[fetchableCount];
+ lazySets[subMappingType.getSubclassId()] = new BitSet(fetchableCount);
+ maybeLazySets[subMappingType.getSubclassId()] = new BitSet(fetchableCount);
}
subInitializers[subMappingType.getSubclassId()][stateArrayPosition] = subInitializer;
eagerSubInitializers[subMappingType.getSubclassId()][stateArrayPosition] = eagerSubInitializers[subclassId][stateArrayPosition];
@@ -411,6 +414,7 @@ public EntityInitializerImpl(
}
this.assemblers = assemblers;
+ this.allInitializers = allInitializers;
this.subInitializers = subInitializers;
this.subInitializersForResolveFromInitialized = rootEntityDescriptor.getBytecodeEnhancementMetadata().isEnhancedForLazyLoading()
? subInitializers
@@ -1762,11 +1766,9 @@ protected void forEachSubInitializer(BiConsumer, RowProcessingSta
}
final EntityInitializerData entityInitializerData = (EntityInitializerData) data;
if ( entityInitializerData.concreteDescriptor == null ) {
- for ( Initializer>[] initializers : subInitializers ) {
- for ( Initializer> initializer : initializers ) {
- if ( initializer != null ) {
- consumer.accept( initializer, rowProcessingState );
- }
+ for ( Initializer> initializer : allInitializers ) {
+ if ( initializer != null ) {
+ consumer.accept( initializer, rowProcessingState );
}
}
}