From bcd70a82c4cae2280f3cf2259d4c394ef9e67285 Mon Sep 17 00:00:00 2001 From: Christian Beikov Date: Thu, 21 Nov 2024 10:13:20 +0100 Subject: [PATCH] Fix some JSON function rendering issues on HANA --- .../hibernate/dialect/aggregate/HANAAggregateSupport.java | 2 +- .../dialect/function/json/HANAJsonObjectAggFunction.java | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/aggregate/HANAAggregateSupport.java b/hibernate-core/src/main/java/org/hibernate/dialect/aggregate/HANAAggregateSupport.java index 527d687bf0..bc67ae7069 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/aggregate/HANAAggregateSupport.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/aggregate/HANAAggregateSupport.java @@ -115,7 +115,7 @@ public String aggregateComponentCustomReadExpression( if ( SqlTypes.isBinaryType( column.getJdbcMapping().getJdbcType().getDdlTypeCode() ) ) { return template.replace( placeholder, - "hextobin(json_value(" + parentPartExpression + columnExpression + "'))" + "hextobin(replace(json_value(" + parentPartExpression + columnExpression + "'),'-',''))" ); } // Fall-through intended diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/function/json/HANAJsonObjectAggFunction.java b/hibernate-core/src/main/java/org/hibernate/dialect/function/json/HANAJsonObjectAggFunction.java index d56d445801..202a844f54 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/function/json/HANAJsonObjectAggFunction.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/function/json/HANAJsonObjectAggFunction.java @@ -71,19 +71,13 @@ protected void renderArgument( sqlAppender.appendSql( " as nvarchar(" + Integer.MAX_VALUE + "))" ); } else { - if ( nullBehavior != JsonNullBehavior.NULL ) { - sqlAppender.appendSql( "nullif(" ); - } sqlAppender.appendSql( "json_query((select " ); arg.accept( translator ); sqlAppender.appendSql( " V from sys.dummy for json('arraywrap'='no'" ); - if ( nullBehavior != JsonNullBehavior.NULL ) { + if ( nullBehavior == JsonNullBehavior.NULL ) { sqlAppender.appendSql( ",'omitnull'='no'" ); } sqlAppender.appendSql( ") returns nvarchar(" + Integer.MAX_VALUE + ")),'$.V')" ); - if ( nullBehavior != JsonNullBehavior.NULL ) { - sqlAppender.appendSql( ",'null')" ); - } } } }