From f3d26e32ecb60791ae1354c325c4f1253e2b00c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sn=C5=8Dwball?= Date: Tue, 21 Aug 2018 10:26:08 +0200 Subject: [PATCH] Possible fix error with multiple uses of enum (#1473) When an enum is exists in the type cache and isn't String, @DbArray fails. This includes a test that should fail everywhere (order of reading fields isn't guaranteed afaik and the column needs to be read before the @DbArray for the test to fail). --- .../ebeaninternal/server/type/DefaultTypeManager.java | 4 ++-- src/test/java/org/tests/model/array/EArrayBean.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index eebf80aca..d6fb20e33 100644 --- a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -351,7 +351,7 @@ public final class DefaultTypeManager implements TypeManager { if (type.equals(List.class)) { if (arrayTypeListFactory != null) { if (isEnumType(valueType)) { - return arrayTypeListFactory.typeForEnum(createEnumScalarType(asEnumClass(valueType), EnumType.STRING)); + return arrayTypeListFactory.typeForEnum(createEnumScalarType(asEnumClass(valueType), null)); } return arrayTypeListFactory.typeFor(valueType); } @@ -360,7 +360,7 @@ public final class DefaultTypeManager implements TypeManager { } else if (type.equals(Set.class)) { if (arrayTypeSetFactory != null) { if (isEnumType(valueType)) { - return arrayTypeSetFactory.typeForEnum(createEnumScalarType(asEnumClass(valueType), EnumType.STRING)); + return arrayTypeSetFactory.typeForEnum(createEnumScalarType(asEnumClass(valueType), null)); } return arrayTypeSetFactory.typeFor(valueType); } diff --git a/src/test/java/org/tests/model/array/EArrayBean.java b/src/test/java/org/tests/model/array/EArrayBean.java index a9c4e7d64..c8fd0f29d 100644 --- a/src/test/java/org/tests/model/array/EArrayBean.java +++ b/src/test/java/org/tests/model/array/EArrayBean.java @@ -18,6 +18,8 @@ public class EArrayBean { ONE, TWO, THREE } + IntEnum foo; + @Id Long id; @@ -50,6 +52,14 @@ public class EArrayBean { @Version Long version; + public IntEnum getFoo() { + return foo; + } + + public void setFoo(final IntEnum foo) { + this.foo = foo; + } + public Long getId() { return id; }