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 d232028661602..97cef720a5950 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 @@ -284,6 +284,14 @@ public static class HibernateOrmConfigLog { @ConfigItem(defaultValue = "false") public boolean sql; + /** + * Logs SQL bind parameter. + *

+ * Setting it to true is obviously not recommended in production. + */ + @ConfigItem(defaultValue = "false") + public boolean bindParam; + /** * Whether JDBC warnings should be collected and logged. */ @@ -291,7 +299,7 @@ public static class HibernateOrmConfigLog { public Optional jdbcWarnings; public boolean isAnyPropertySet() { - return sql || jdbcWarnings.isPresent(); + return sql || bindParam || 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 4a273307e3156..4d5b79cfbb368 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; @@ -716,6 +718,13 @@ private void handleHibernateORMWithNoPersistenceXml( } } + @BuildStep + public void produceLoggingCategories(BuildProducer categories) { + if (hibernateConfig.log.bindParam) { + 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