diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/QuerySettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/QuerySettings.java index e692122d25..06ad3347ef 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/QuerySettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/QuerySettings.java @@ -7,7 +7,6 @@ package org.hibernate.cfg; import org.hibernate.boot.spi.SessionFactoryOptions; -import org.hibernate.query.NullPrecedence; import org.hibernate.query.spi.QueryPlan; import jakarta.persistence.criteria.CriteriaDelete; @@ -98,13 +97,14 @@ public interface QuerySettings { String CRITERIA_VALUE_HANDLING_MODE = "hibernate.criteria.value_handling_mode"; /** - * Specifies the default {@linkplain NullPrecedence precedence of null values} in the - * HQL {@code ORDER BY} clause, either {@code none}, {@code first}, or {@code last}, - * or an instance of {@link NullPrecedence}. + * Specifies the default {@linkplain jakarta.persistence.criteria.Nulls precedence + * of null values} sorted via the HQL {@code ORDER BY} clause, either {@code none}, + * {@code first}, or {@code last}, or an instance of the enumeration + * {@link jakarta.persistence.criteria.Nulls}. *

* The default is {@code none}. * - * @see NullPrecedence + * @see jakarta.persistence.criteria.Nulls * @see org.hibernate.boot.SessionFactoryBuilder#applyDefaultNullPrecedence(jakarta.persistence.criteria.Nulls) */ String DEFAULT_NULL_ORDERING = "hibernate.order_by.default_null_ordering"; @@ -245,7 +245,7 @@ public interface QuerySettings { /** * For database supporting name parameters this setting allows to use named parameter is the procedure call. - * + *

* By default, this is set to false */ String QUERY_PASS_PROCEDURE_PARAMETER_NAMES = "hibernate.query.pass_procedure_paramater_names"; diff --git a/hibernate-core/src/main/java/org/hibernate/query/ImmutableEntityUpdateQueryHandlingMode.java b/hibernate-core/src/main/java/org/hibernate/query/ImmutableEntityUpdateQueryHandlingMode.java index dd0d01a1ea..160cd5e8a1 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/ImmutableEntityUpdateQueryHandlingMode.java +++ b/hibernate-core/src/main/java/org/hibernate/query/ImmutableEntityUpdateQueryHandlingMode.java @@ -7,16 +7,16 @@ package org.hibernate.query; import org.hibernate.HibernateException; +import org.hibernate.cfg.AvailableSettings; /** - * This enum defines how {@link org.hibernate.annotations.Immutable} entities are handled when - * executing a bulk update statement. + * Controls for how {@linkplain org.hibernate.annotations.Immutable immutable} entities + * are handled when executing a bulk update statement. *

* * @see org.hibernate.cfg.AvailableSettings#IMMUTABLE_ENTITY_UPDATE_QUERY_HANDLING_MODE @@ -29,31 +29,32 @@ public enum ImmutableEntityUpdateQueryHandlingMode { EXCEPTION; /** - * Interpret the configured {@link ImmutableEntityUpdateQueryHandlingMode} value. - * Valid values are either a {@link ImmutableEntityUpdateQueryHandlingMode} object or - * its string representation. For string values, the matching is case-insensitive, - * so you can use either {@code warning} or {@code exception}. + * Interpret the setting specified via + * {@value AvailableSettings#IMMUTABLE_ENTITY_UPDATE_QUERY_HANDLING_MODE}. + *

+ * Valid values are an instance of {@link ImmutableEntityUpdateQueryHandlingMode} + * or its string representation. For string values, the matching is case-insensitive, + * so {@code warning} or {@code exception} are legal values. * - * @param mode configured {@link ImmutableEntityUpdateQueryHandlingMode} representation - * @return associated {@link ImmutableEntityUpdateQueryHandlingMode} object + * @param setting the configuration setting. + * @return the associated {@link ImmutableEntityUpdateQueryHandlingMode} object */ - public static ImmutableEntityUpdateQueryHandlingMode interpret(Object mode) { - if ( mode == null ) { + public static ImmutableEntityUpdateQueryHandlingMode interpret(Object setting) { + if ( setting == null ) { return WARNING; } - else if ( mode instanceof ImmutableEntityUpdateQueryHandlingMode ) { - return (ImmutableEntityUpdateQueryHandlingMode) mode; + else if ( setting instanceof ImmutableEntityUpdateQueryHandlingMode mode ) { + return mode; } - else if ( mode instanceof String ) { + else if ( setting instanceof String string ) { for ( ImmutableEntityUpdateQueryHandlingMode value : values() ) { - if ( value.name().equalsIgnoreCase( (String) mode ) ) { + if ( value.name().equalsIgnoreCase( string ) ) { return value; } } } - throw new HibernateException( - "Unrecognized immutable_entity_update_query_handling_mode value : " + mode - + ". Supported values include 'warning' and 'exception'." - ); + throw new HibernateException( "Unrecognized value '" + setting + + "' specified via '" + AvailableSettings.IMMUTABLE_ENTITY_UPDATE_QUERY_HANDLING_MODE + + "' (should be 'warning' or 'exception')" ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/NullPrecedence.java b/hibernate-core/src/main/java/org/hibernate/query/NullPrecedence.java index 24e37d1f00..37c12ae99c 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/NullPrecedence.java +++ b/hibernate-core/src/main/java/org/hibernate/query/NullPrecedence.java @@ -6,7 +6,6 @@ */ package org.hibernate.query; -import org.hibernate.AssertionFailure; import org.hibernate.dialect.NullOrdering; import jakarta.persistence.criteria.Nulls; @@ -24,21 +23,15 @@ public enum NullPrecedence { /** * Null precedence not specified. Relies on the RDBMS implementation. */ - NONE( Nulls.NONE ), + NONE, /** * Null values appear at the beginning of the sorted collection. */ - FIRST( Nulls.FIRST ), + FIRST, /** * Null values appear at the end of the sorted collection. */ - LAST( Nulls.LAST ); - - private final Nulls jpaValue; - - NullPrecedence(Nulls jpaValue) { - this.jpaValue = jpaValue; - } + LAST; /** * Is this null precedence the default for the given sort order and null ordering. @@ -47,38 +40,21 @@ public enum NullPrecedence { */ @Deprecated(since = "7.0", forRemoval = true) public boolean isDefaultOrdering(SortDirection sortOrder, NullOrdering nullOrdering) { - switch (this) { - case NONE: - return true; - case FIRST: - switch ( nullOrdering ) { - case FIRST: - return true; - case LAST: - return false; - case SMALLEST: - return sortOrder == SortDirection.ASCENDING; - case GREATEST: - return sortOrder == SortDirection.DESCENDING; - default: - throw new AssertionFailure("Unrecognized NullOrdering"); - } - case LAST: - switch ( nullOrdering ) { - case LAST: - return true; - case FIRST: - return false; - case SMALLEST: - return sortOrder == SortDirection.DESCENDING; - case GREATEST: - return sortOrder == SortDirection.ASCENDING; - default: - throw new AssertionFailure("Unrecognized NullOrdering"); - } - default: - throw new AssertionFailure("Unrecognized NullPrecedence"); - } + return switch (this) { + case NONE -> true; + case FIRST -> switch (nullOrdering) { + case FIRST -> true; + case LAST -> false; + case SMALLEST -> sortOrder == SortDirection.ASCENDING; + case GREATEST -> sortOrder == SortDirection.DESCENDING; + }; + case LAST -> switch (nullOrdering) { + case LAST -> true; + case FIRST -> false; + case SMALLEST -> sortOrder == SortDirection.DESCENDING; + case GREATEST -> sortOrder == SortDirection.ASCENDING; + }; + }; } /** @@ -112,22 +88,19 @@ public enum NullPrecedence { } public Nulls getJpaValue() { - return jpaValue; + return switch (this) { + case NONE -> Nulls.NONE; + case FIRST -> Nulls.FIRST; + case LAST -> Nulls.LAST; + }; } public static NullPrecedence fromJpaValue(Nulls jpaValue) { - switch ( jpaValue ) { - case NONE: { - return NullPrecedence.NONE; - } - case FIRST: { - return NullPrecedence.FIRST; - } - case LAST: { - return NullPrecedence.LAST; - } - } + return switch (jpaValue) { + case NONE -> NullPrecedence.NONE; + case FIRST -> NullPrecedence.FIRST; + case LAST -> NullPrecedence.LAST; + }; - throw new IllegalArgumentException( "Unexpected JPA Nulls - " + jpaValue ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/query/SortDirection.java b/hibernate-core/src/main/java/org/hibernate/query/SortDirection.java index 994ad30765..8f65af5cb9 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/SortDirection.java +++ b/hibernate-core/src/main/java/org/hibernate/query/SortDirection.java @@ -20,30 +20,20 @@ public enum SortDirection { DESCENDING; public SortDirection reverse() { - switch (this) { - case ASCENDING: - return DESCENDING; - case DESCENDING: - return ASCENDING; - default: - return this; - } + return switch (this) { + case ASCENDING -> DESCENDING; + case DESCENDING -> ASCENDING; + }; } public static SortDirection interpret(String value) { if ( value == null ) { return null; } - - switch ( value.toLowerCase(Locale.ROOT) ) { - case "asc": - case "ascending": - return ASCENDING; - case "desc": - case "descending": - return DESCENDING; - default: - throw new IllegalArgumentException( "Unknown sort order: " + value ); - } + else return switch ( value.toLowerCase(Locale.ROOT) ) { + case "asc", "ascending" -> ASCENDING; + case "desc", "descending" -> DESCENDING; + default -> throw new IllegalArgumentException( "Unknown sort order: " + value ); + }; } }