diff --git a/bom/application/pom.xml b/bom/application/pom.xml
index 49e76c95bd93f..d8fe2f51979f8 100644
--- a/bom/application/pom.xml
+++ b/bom/application/pom.xml
@@ -101,10 +101,10 @@
bytebuddy.version (just below), hibernate-orm.version-for-documentation (in docs/pom.xml)
and both hibernate-orm.version and antlr.version in build-parent/pom.xml
WARNING again for diffs that don't provide enough context: when updating, see above -->
- 6.4.4.Final
- 1.14.11
+ 6.5.0.Final
+ 1.14.12
6.0.6.Final
- 2.2.2.Final
+ 2.3.0.Final
8.0.1.Final
7.1.0.Final
diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmTypes.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmTypes.java
index e9f713c98007a..b60058816d1ec 100644
--- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmTypes.java
+++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmTypes.java
@@ -231,6 +231,7 @@ private HibernateOrmTypes() {
DotName.createSimple("org.hibernate.annotations.Filters"),
DotName.createSimple("org.hibernate.annotations.ForeignKey"),
DotName.createSimple("org.hibernate.annotations.Formula"),
+ DotName.createSimple("org.hibernate.annotations.FractionalSeconds"),
DotName.createSimple("org.hibernate.annotations.Generated"),
DotName.createSimple("org.hibernate.annotations.GeneratedColumn"),
DotName.createSimple("org.hibernate.annotations.GeneratorType"),
@@ -287,6 +288,7 @@ private HibernateOrmTypes() {
DotName.createSimple("org.hibernate.annotations.Persister"),
DotName.createSimple("org.hibernate.annotations.Polymorphism"),
DotName.createSimple("org.hibernate.annotations.Proxy"),
+ DotName.createSimple("org.hibernate.annotations.QueryCacheLayout"),
DotName.createSimple("org.hibernate.annotations.RowId"),
DotName.createSimple("org.hibernate.annotations.SQLDelete"),
DotName.createSimple("org.hibernate.annotations.SQLDeleteAll"),
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java
index 18fd28d86a15d..4becc05929aa9 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java
@@ -223,7 +223,7 @@ private RuntimeSettings buildRuntimeSettings(String persistenceUnitName, Recorde
}
// Allow detection of driver/database capabilities on runtime init (was disabled during static init)
- runtimeSettingsBuilder.put("hibernate.temp.use_jdbc_metadata_defaults", "true");
+ runtimeSettingsBuilder.put("hibernate.boot.allow_jdbc_metadata_access", "true");
if (!persistenceUnitConfig.unsupportedProperties().isEmpty()) {
log.warnf("Persistence-unit [%s] sets unsupported properties."
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java
index fa815d3fe5d43..7315f7449a403 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/StatelessSessionLazyDelegator.java
@@ -8,6 +8,7 @@
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.CriteriaUpdate;
+import org.hibernate.Filter;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
@@ -23,6 +24,7 @@
import org.hibernate.query.Query;
import org.hibernate.query.SelectionQuery;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
+import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
/**
@@ -91,6 +93,26 @@ public T get(Class entityClass, Object id, LockMode lockMode) {
return delegate.get().get(entityClass, id, lockMode);
}
+ @Override
+ public Filter enableFilter(String filterName) {
+ return delegate.get().enableFilter(filterName);
+ }
+
+ @Override
+ public Filter getEnabledFilter(String filterName) {
+ return delegate.get().getEnabledFilter(filterName);
+ }
+
+ @Override
+ public void disableFilter(String filterName) {
+ delegate.get().disableFilter(filterName);
+ }
+
+ @Override
+ public MutationQuery createMutationQuery(JpaCriteriaInsert insertSelect) {
+ return delegate.get().createMutationQuery(insertSelect);
+ }
+
@Override
public void refresh(Object entity) {
delegate.get().refresh(entity);
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/FastBootMetadataBuilder.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/FastBootMetadataBuilder.java
index 33f24af8d789b..9fafd88d5a20c 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/FastBootMetadataBuilder.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/boot/FastBootMetadataBuilder.java
@@ -274,7 +274,7 @@ private MergedSettings mergeSettings(QuarkusPersistenceUnitDefinition puDefiniti
// Quarkus specific
- cfg.put("hibernate.temp.use_jdbc_metadata_defaults", "false");
+ cfg.put("hibernate.boot.allow_jdbc_metadata_access", "false");
//This shouldn't be encouraged, but sometimes it's really useful - and it used to be the default
//in Hibernate ORM before the JPA spec would require to change this.
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedSession.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedSession.java
index 9541b03d0bb8c..5d616754d4a22 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedSession.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedSession.java
@@ -48,6 +48,7 @@
import org.hibernate.query.Query;
import org.hibernate.query.SelectionQuery;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
+import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
import org.hibernate.stat.SessionStatistics;
@@ -1317,6 +1318,14 @@ public MutationQuery createMutationQuery(JpaCriteriaInsertSelect insertSelect) {
}
}
+ @Override
+ public MutationQuery createMutationQuery(JpaCriteriaInsert insertSelect) {
+ checkBlocking();
+ try (SessionResult emr = acquireSession()) {
+ return emr.session.createMutationQuery(insertSelect);
+ }
+ }
+
@Override
public MutationQuery createNativeMutationQuery(String sqlString) {
checkBlocking();
diff --git a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java
index c20c509377e64..5d52415fdb78a 100644
--- a/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java
+++ b/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/session/TransactionScopedStatelessSession.java
@@ -13,6 +13,7 @@
import jakarta.transaction.TransactionManager;
import jakarta.transaction.TransactionSynchronizationRegistry;
+import org.hibernate.Filter;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
@@ -28,6 +29,7 @@
import org.hibernate.query.Query;
import org.hibernate.query.SelectionQuery;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
+import org.hibernate.query.criteria.JpaCriteriaInsert;
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
import io.quarkus.arc.Arc;
@@ -394,6 +396,30 @@ public Object get(String entityName, Object id, LockMode lockMode) {
}
}
+ @Override
+ public Filter enableFilter(String filterName) {
+ checkBlocking();
+ try (SessionResult emr = acquireSession()) {
+ return emr.statelessSession.enableFilter(filterName);
+ }
+ }
+
+ @Override
+ public Filter getEnabledFilter(String filterName) {
+ checkBlocking();
+ try (SessionResult emr = acquireSession()) {
+ return emr.statelessSession.getEnabledFilter(filterName);
+ }
+ }
+
+ @Override
+ public void disableFilter(String filterName) {
+ checkBlocking();
+ try (SessionResult emr = acquireSession()) {
+ emr.statelessSession.disableFilter(filterName);
+ }
+ }
+
@Override
public String getTenantIdentifier() {
try (SessionResult emr = acquireSession()) {
@@ -576,6 +602,14 @@ public MutationQuery createMutationQuery(JpaCriteriaInsertSelect insertSelect) {
}
}
+ @Override
+ public MutationQuery createMutationQuery(JpaCriteriaInsert insertSelect) {
+ checkBlocking();
+ try (SessionResult emr = acquireSession()) {
+ return emr.statelessSession.createMutationQuery(insertSelect);
+ }
+ }
+
@Override
public MutationQuery createNativeMutationQuery(String sqlString) {
checkBlocking();
diff --git a/integration-tests/hibernate-orm-panache-kotlin/src/main/kotlin/io/quarkus/it/panache/kotlin/Status.kt b/integration-tests/hibernate-orm-panache-kotlin/src/main/kotlin/io/quarkus/it/panache/kotlin/Status.kt
index 1c21f2a2204d3..d9a471e250749 100644
--- a/integration-tests/hibernate-orm-panache-kotlin/src/main/kotlin/io/quarkus/it/panache/kotlin/Status.kt
+++ b/integration-tests/hibernate-orm-panache-kotlin/src/main/kotlin/io/quarkus/it/panache/kotlin/Status.kt
@@ -1,6 +1,8 @@
package io.quarkus.it.panache.kotlin
enum class Status {
+ // Make sure to keep the ordinal order different from alphabetical order here
+ // See io.quarkus.it.panache.TestEndpointRunner
LIVING,
DECEASED
}
diff --git a/integration-tests/hibernate-orm-panache-kotlin/src/test/kotlin/io/quarkus/it/panache/TestEndpointRunner.kt b/integration-tests/hibernate-orm-panache-kotlin/src/test/kotlin/io/quarkus/it/panache/TestEndpointRunner.kt
index d52aeaebc2ff0..f8607b6d984e8 100644
--- a/integration-tests/hibernate-orm-panache-kotlin/src/test/kotlin/io/quarkus/it/panache/TestEndpointRunner.kt
+++ b/integration-tests/hibernate-orm-panache-kotlin/src/test/kotlin/io/quarkus/it/panache/TestEndpointRunner.kt
@@ -40,7 +40,11 @@ class TestEndpointRunner {
con.close()
Assertions.assertEquals(
- "CHARACTER VARYING",
+ // The H2 dialect uses native enums by default for @Enumerated(EnumType.STRING)
+ // We're also checking enum value order here:
+ // with @Enumerated(EnumType.STRING), enum values should be in alphabetical order
+ // (which is different from the ordinal order)
+ "ENUM('DECEASED', 'LIVING')",
schema["PERSON2"]?.get("STATUS"),
schema.toString()
)