mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#852 - javax.persistence.PersistenceException: No ScalarType registered for class Foo$1 ... where Foo is an Enum where individual instances override a method (example below).
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package com.avaje.ebean.server.type;
|
||||
|
||||
import com.avaje.ebean.annotation.EnumValue;
|
||||
|
||||
/**
|
||||
* Enum with method overrides (and hence multiple actual classes).
|
||||
*/
|
||||
public enum MyEnum {
|
||||
|
||||
@EnumValue("A")Aval {
|
||||
@Override
|
||||
public String doSomething() {
|
||||
return "bar";
|
||||
}
|
||||
},
|
||||
@EnumValue("B")Bval,
|
||||
|
||||
@EnumValue("C")Cval {
|
||||
@Override
|
||||
public String doSomething() {
|
||||
return "baz";
|
||||
}
|
||||
};
|
||||
|
||||
public String doSomething() {
|
||||
return "foo";
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,31 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestTypeManager extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testEnumWithSubclasses() throws SQLException {
|
||||
|
||||
DefaultTypeManager typeManager = createTypeManager();
|
||||
|
||||
ScalarType<?> type = typeManager.createEnumScalarType(MyEnum.class);
|
||||
typeManager.addEnumType(type, MyEnum.class);
|
||||
|
||||
Object val = type.read(new DummyDataReader("A"));
|
||||
assertThat(val).isEqualTo(MyEnum.Aval);
|
||||
val = type.read(new DummyDataReader("B"));
|
||||
assertThat(val).isEqualTo(MyEnum.Bval);
|
||||
val = type.read(new DummyDataReader("C"));
|
||||
assertThat(val).isEqualTo(MyEnum.Cval);
|
||||
|
||||
ScalarType<?> typeGeneral = typeManager.getScalarType(MyEnum.class);
|
||||
assertThat(typeGeneral).isNotNull();
|
||||
ScalarType<?> typeB = typeManager.getScalarType(MyEnum.Bval.getClass());
|
||||
assertThat(typeB).isNotNull();
|
||||
ScalarType<?> typeA = typeManager.getScalarType(MyEnum.Aval.getClass());
|
||||
assertThat(typeA).isNotNull();
|
||||
ScalarType<?> typeC = typeManager.getScalarType(MyEnum.Cval.getClass());
|
||||
assertThat(typeC).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnumWithChar() throws SQLException {
|
||||
|
||||
@@ -88,7 +113,7 @@ public class TestTypeManager extends BaseTestCase {
|
||||
|
||||
String val;
|
||||
|
||||
public DummyDataReader(String val) {
|
||||
DummyDataReader(String val) {
|
||||
super(null, null);
|
||||
this.val = val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user