From ac0f884dbe6f2a3033db5cecb9d1adab10b02475 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 18 Jun 2025 08:20:41 +0200 Subject: [PATCH] change Identifier.quote() to an instance method --- .../community/dialect/HANALegacyDialect.java | 2 +- .../model/internal/AnnotatedJoinColumns.java | 4 +-- .../boot/model/internal/TableBinder.java | 2 +- .../boot/model/naming/Identifier.java | 25 +++++++++++++------ .../ImplicitNamingStrategyLegacyJpaImpl.java | 2 +- .../org/hibernate/dialect/HANADialect.java | 2 +- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/HANALegacyDialect.java b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/HANALegacyDialect.java index efe1af35cdfb..6e1ad5fb906a 100644 --- a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/HANALegacyDialect.java +++ b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/HANALegacyDialect.java @@ -965,7 +965,7 @@ public Identifier normalizeQuoting(Identifier identifier) { // need to quote names containing special characters like ':' if ( !normalizedIdentifier.isQuoted() && !normalizedIdentifier.getText().matches( "\\w+" ) ) { - normalizedIdentifier = Identifier.quote( normalizedIdentifier ); + normalizedIdentifier = normalizedIdentifier.quoted(); } return normalizedIdentifier; diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumns.java b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumns.java index 38181fb6a633..a8988e5956d5 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumns.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/AnnotatedJoinColumns.java @@ -488,7 +488,7 @@ private static Identifier quoteIfNecessary( boolean isRefColumnQuoted, Identifier logicalTableName, Identifier columnIdentifier) { return !columnIdentifier.isQuoted() && ( isRefColumnQuoted || logicalTableName.isQuoted() ) - ? Identifier.quote( columnIdentifier ) + ? columnIdentifier.quoted() : columnIdentifier; } @@ -496,7 +496,7 @@ private static Identifier quoteIfNecessary( boolean isRefColumnQuoted, String logicalTableName, Identifier columnIdentifier) { //one element was quoted so we quote return isRefColumnQuoted || isQuoted( logicalTableName ) - ? Identifier.quote( columnIdentifier ) + ? columnIdentifier.quoted() : columnIdentifier; } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/TableBinder.java b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/TableBinder.java index e2e0aafd328e..ed807176d6b2 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/internal/TableBinder.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/internal/TableBinder.java @@ -263,7 +263,7 @@ public MetadataBuildingContext getBuildingContext() { } if ( ownerEntityTableQuoted || associatedEntityTableQuoted ) { - name = Identifier.quote( name ); + name = name.quoted(); } return name; diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/naming/Identifier.java b/hibernate-core/src/main/java/org/hibernate/boot/model/naming/Identifier.java index 8cfc3dee9ce8..c4d105c34f5f 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/naming/Identifier.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/naming/Identifier.java @@ -222,6 +222,13 @@ public boolean isQuoted() { return isQuoted; } + /** + * A quoted form of this identifier. + */ + public Identifier quoted() { + return isQuoted ? this : toIdentifier( text, true ); + } + /** * If this is a quoted identifier, then return the identifier name * enclosed in dialect-specific open- and end-quotes; otherwise, @@ -272,18 +279,20 @@ public int hashCode() { : text.toLowerCase( Locale.ENGLISH ).hashCode(); } + @Override + public int compareTo(Identifier identifier) { + return getCanonicalName().compareTo( identifier.getCanonicalName() ); + } + public static boolean areEqual(Identifier id1, Identifier id2) { return Objects.equals( id1, id2 ); } + /** + * @deprecated Use {@link #quoted()}. + */ + @Deprecated(since = "7.1", forRemoval = true) public static Identifier quote(Identifier identifier) { - return identifier.isQuoted() - ? identifier - : Identifier.toIdentifier( identifier.getText(), true ); - } - - @Override - public int compareTo(Identifier identifier) { - return getCanonicalName().compareTo( identifier.getCanonicalName() ); + return identifier.quoted(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/naming/ImplicitNamingStrategyLegacyJpaImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/model/naming/ImplicitNamingStrategyLegacyJpaImpl.java index 11b0f065288f..052711ac7bb1 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/naming/ImplicitNamingStrategyLegacyJpaImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/naming/ImplicitNamingStrategyLegacyJpaImpl.java @@ -31,7 +31,7 @@ public Identifier determineCollectionTableName(ImplicitCollectionTableNameSource + "_" + transformAttributePath( source.getOwningAttributePath() ), source.getBuildingContext() ); - return owningPhysicalTableName.isQuoted() ? Identifier.quote( identifier ) : identifier; + return owningPhysicalTableName.isQuoted() ? identifier.quoted() : identifier; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/HANADialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/HANADialect.java index e13f99e3e5a8..68d3f3c1928e 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/HANADialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/HANADialect.java @@ -976,7 +976,7 @@ public Identifier normalizeQuoting(Identifier identifier) { // need to quote names containing special characters like ':' if ( !normalizedIdentifier.isQuoted() && !normalizedIdentifier.getText().matches( "\\w+" ) ) { - normalizedIdentifier = Identifier.quote( normalizedIdentifier ); + normalizedIdentifier = normalizedIdentifier.quoted(); } return normalizedIdentifier;