diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/ConstructorExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/ConstructorExpression.java index 2f27fb9a5..80c7b1a5d 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/ConstructorExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/ConstructorExpression.java @@ -15,7 +15,10 @@ package com.querydsl.core.types; import static com.querydsl.core.util.ConstructorUtils.*; +import java.io.IOException; +import java.io.ObjectInputStream; import java.lang.reflect.Constructor; +import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.List; @@ -147,4 +150,19 @@ public class ConstructorExpression extends FactoryExpressionBase { } } + private void readObject(ObjectInputStream ois) + throws ClassNotFoundException, IOException { + ois.readObject(); + try { + Field constructor = ConstructorExpression.class.getDeclaredField("constructor"); + constructor.setAccessible(true); + constructor.set(this, getConstructor(getType(), parameterTypes)); + Field transformers = ConstructorExpression.class.getDeclaredField("transformers"); + transformers.setAccessible(true); + transformers.set(this, getTransformers(this.constructor)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + }