From d35c0602ceb86b94f7801b8a767f15c1697b7cc8 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 11 Jun 2025 08:39:57 +0200 Subject: [PATCH] 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(); + } }