Skip to content

Commit 05de3e4

Browse files
committed
clarify the semantics of hibernate.criteria.value_handling_mode
1 parent ec97479 commit 05de3e4

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

hibernate-core/src/main/java/org/hibernate/cfg/AvailableSettings.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2395,20 +2395,38 @@ public interface AvailableSettings {
23952395
String MERGE_ENTITY_COPY_OBSERVER = "hibernate.event.merge.entity_copy_observer";
23962396

23972397
/**
2398-
* By default, {@linkplain jakarta.persistence.criteria.CriteriaBuilder criteria}
2399-
* queries use bind parameters for any value passed via the JPA Criteria API.
2398+
* By default, a {@linkplain jakarta.persistence.criteria.CriteriaBuilder criteria
2399+
* query} produces SQL with a JDBC bind parameter for any value specified via the
2400+
* criteria query API, except when the value is passed via
2401+
* {@link jakarta.persistence.criteria.CriteriaBuilder#literal(Object)}, in which
2402+
* case the value is "inlined" as a SQL literal.
2403+
* <p>
2404+
* This setting may be used to override this default behavior:
24002405
* <ul>
2401-
* <li>The {@link org.hibernate.query.criteria.ValueHandlingMode#BIND "bind"}
2402-
* mode uses bind variables for any literal value.
2403-
* <li>The {@link org.hibernate.query.criteria.ValueHandlingMode#INLINE "inline"}
2406+
* <li>the {@link org.hibernate.query.criteria.ValueHandlingMode#BIND "bind"}
2407+
* mode uses bind parameters to pass such values to JDBC, but
2408+
* <li>the {@link org.hibernate.query.criteria.ValueHandlingMode#INLINE "inline"}
24042409
* mode inlines values as SQL literals.
24052410
* </ul>
24062411
* <p>
2407-
* The default value is {@link org.hibernate.query.criteria.ValueHandlingMode#BIND}.
2412+
* In both modes:
2413+
* <ul>
2414+
* <li>values specified using {@code literal()} are inlined, and
2415+
* <li>values specified using
2416+
* {@link jakarta.persistence.criteria.CriteriaBuilder#parameter(Class)} to create a
2417+
* {@link jakarta.persistence.criteria.ParameterExpression criteria parameter} and
2418+
* {@link jakarta.persistence.Query#setParameter(jakarta.persistence.Parameter,Object)}
2419+
* to specify its argument are passed to JDBC using a bind parameter.
2420+
* </ul>
2421+
* <p>
2422+
* The default mode is {@link org.hibernate.query.criteria.ValueHandlingMode#BIND}.
24082423
*
24092424
* @since 6.0.0
24102425
*
24112426
* @see org.hibernate.query.criteria.ValueHandlingMode
2427+
* @see jakarta.persistence.criteria.CriteriaBuilder#literal(Object)
2428+
* @see jakarta.persistence.criteria.CriteriaBuilder#parameter(Class)
2429+
* @see org.hibernate.query.criteria.HibernateCriteriaBuilder#value(Object)
24122430
*/
24132431
String CRITERIA_VALUE_HANDLING_MODE = "hibernate.criteria.value_handling_mode";
24142432

0 commit comments

Comments
 (0)