From ab6f3f366e11d507cff26fb0e2cd6f1ee1377d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 22 Jul 2016 21:16:08 +0300 Subject: [PATCH] Fix serialization --- .../core/types/ConstructorExpression.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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); + } + } + }