diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java
index d2320286616022..31691b9aded410 100644
--- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java
+++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmConfig.java
@@ -279,10 +279,19 @@ public static class HibernateOrmConfigLog {
/**
* Show SQL logs and format them nicely.
*
+ * true logs sql statements
+ * extended logs sql statements and bind parameter values
+ *
* Setting it to true is obviously not recommended in production.
*/
- @ConfigItem(defaultValue = "false")
- public boolean sql;
+ @ConfigItem(defaultValueDocumentation = "false")
+ public Optional sql;
+
+ public enum HibernateOrmConfigLogSqlValue {
+ FALSE,
+ TRUE,
+ EXTENDED;
+ }
/**
* Whether JDBC warnings should be collected and logged.
@@ -291,7 +300,7 @@ public static class HibernateOrmConfigLog {
public Optional jdbcWarnings;
public boolean isAnyPropertySet() {
- return sql || jdbcWarnings.isPresent();
+ return sql.isPresent() || jdbcWarnings.isPresent();
}
}
diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java
index 4a273307e31568..2d3ae51e351067 100644
--- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java
+++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java
@@ -50,6 +50,7 @@
import org.jboss.jandex.DotName;
import org.jboss.jandex.IndexView;
import org.jboss.jandex.Indexer;
+import org.jboss.logmanager.Level;
import io.quarkus.agroal.deployment.JdbcDataSourceBuildItem;
import io.quarkus.agroal.deployment.JdbcDataSourceSchemaReadyBuildItem;
@@ -71,6 +72,7 @@
import io.quarkus.deployment.builditem.GeneratedResourceBuildItem;
import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem;
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
+import io.quarkus.deployment.builditem.LogCategoryBuildItem;
import io.quarkus.deployment.builditem.SystemPropertyBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
@@ -642,9 +644,14 @@ private void handleHibernateORMWithNoPersistenceXml(
fetchSize.toString()));
// Logging
- if (hibernateConfig.log.sql) {
- desc.getProperties().setProperty(AvailableSettings.SHOW_SQL, "true");
- desc.getProperties().setProperty(AvailableSettings.FORMAT_SQL, "true");
+ if (hibernateConfig.log.sql.isPresent()) {
+ HibernateOrmConfig.HibernateOrmConfigLog.HibernateOrmConfigLogSqlValue value = hibernateConfig.log.sql
+ .get();
+ if (value.ordinal() >= HibernateOrmConfig.HibernateOrmConfigLog.HibernateOrmConfigLogSqlValue.TRUE
+ .ordinal()) {
+ desc.getProperties().setProperty(AvailableSettings.SHOW_SQL, "true");
+ desc.getProperties().setProperty(AvailableSettings.FORMAT_SQL, "true");
+ }
}
if (hibernateConfig.log.jdbcWarnings.isPresent()) {
@@ -716,6 +723,18 @@ private void handleHibernateORMWithNoPersistenceXml(
}
}
+ @BuildStep
+ public void produceLoggingCategories(BuildProducer categories) {
+ if (hibernateConfig.log.sql.isPresent()) {
+ HibernateOrmConfig.HibernateOrmConfigLog.HibernateOrmConfigLogSqlValue value = hibernateConfig.log.sql
+ .get();
+
+ if (HibernateOrmConfig.HibernateOrmConfigLog.HibernateOrmConfigLogSqlValue.EXTENDED.equals(value)) {
+ categories.produce(new LogCategoryBuildItem("org.hibernate.type.descriptor.sql.BasicBinder", Level.TRACE));
+ }
+ }
+ }
+
private Optional guessDialect(Optional dbKind) {
// For now select the latest dialect from the driver
// later, we can keep doing that but also avoid DCE