From f12f31f09f93c8df1b92a48e99b1912b14973331 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 11 Jun 2025 08:39:57 +0200 Subject: [PATCH 1/2] implement equals() / hashCode() for NativeQueryConstructorTransformer to help the query interpretation cache --- .../jpa/spi/NativeQueryConstructorTransformer.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hibernate-core/src/main/java/org/hibernate/jpa/spi/NativeQueryConstructorTransformer.java b/hibernate-core/src/main/java/org/hibernate/jpa/spi/NativeQueryConstructorTransformer.java index c45bda1919ef..f65b2bcb84c3 100644 --- a/hibernate-core/src/main/java/org/hibernate/jpa/spi/NativeQueryConstructorTransformer.java +++ b/hibernate-core/src/main/java/org/hibernate/jpa/spi/NativeQueryConstructorTransformer.java @@ -24,7 +24,7 @@ public class NativeQueryConstructorTransformer implements TupleTransformer { private final Class resultClass; - private Constructor constructor; + private transient Constructor constructor; private Constructor constructor(Object[] elements) { if ( constructor == null ) { @@ -75,4 +75,16 @@ public T transformTuple(Object[] tuple, String[] aliases) { throw new InstantiationException( "Cannot instantiate query result type", resultClass, e ); } } + + @Override + public boolean equals(Object obj) { + return obj instanceof NativeQueryConstructorTransformer that + && this.resultClass == that.resultClass; + // should be safe to ignore the cached constructor here + } + + @Override + public int hashCode() { + return resultClass.hashCode(); + } } From 02b381de3e814c187d6919fbcd843d2ad29b926c Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 11 Jun 2025 08:41:04 +0200 Subject: [PATCH 2/2] add extra item of info to comment --- .../exception/internal/SQLStateConversionDelegate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hibernate-core/src/main/java/org/hibernate/exception/internal/SQLStateConversionDelegate.java b/hibernate-core/src/main/java/org/hibernate/exception/internal/SQLStateConversionDelegate.java index da51bfbec09b..87637185bb1e 100644 --- a/hibernate-core/src/main/java/org/hibernate/exception/internal/SQLStateConversionDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/exception/internal/SQLStateConversionDelegate.java @@ -80,7 +80,7 @@ public SQLStateConversionDelegate(ConversionContext conversionContext) { return new JDBCConnectionException( message, sqlException, sql ); case "21", // "cardinality violation" - "22": // "data exception" (22001 is string too long) + "22": // "data exception" (22001 is string too long; 22003 is numeric value out of range) return new DataException( message, sqlException, sql ); case "28": // "authentication failure"