diff --git a/src/main/java/io/ebeaninternal/server/deploy/InheritInfo.java b/src/main/java/io/ebeaninternal/server/deploy/InheritInfo.java index d93d74fdc..8c536d6ca 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/InheritInfo.java +++ b/src/main/java/io/ebeaninternal/server/deploy/InheritInfo.java @@ -6,6 +6,7 @@ import io.ebeaninternal.server.deploy.id.IdBinder; import io.ebeaninternal.server.deploy.parse.DeployInheritInfo; import io.ebeaninternal.server.query.SqlTreeProperties; +import java.lang.reflect.Modifier; import javax.persistence.PersistenceException; import java.sql.SQLException; import java.util.ArrayList; @@ -291,7 +292,7 @@ public class InheritInfo { * Return true if this is considered a concrete type in the inheritance hierarchy. */ public boolean isConcrete() { - return discriminatorValue != null; + return !Modifier.isAbstract(type.getModifiers()); } /** diff --git a/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java b/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java index f7fe0d56c..ce6bc1853 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java +++ b/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java @@ -126,6 +126,8 @@ public class DeployInherit { DiscriminatorValue dv = AnnotationUtil.findAnnotation(cls, DiscriminatorValue.class); // do not search recursive if (dv != null) { info.setDiscriminatorValue(dv.value()); + } else { + info.setDiscriminatorValue(cls.getSimpleName()); } return info; diff --git a/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInheritInfo.java b/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInheritInfo.java index a62d84692..4c645457d 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInheritInfo.java +++ b/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInheritInfo.java @@ -2,6 +2,7 @@ package io.ebeaninternal.server.deploy.parse; import io.ebeaninternal.server.deploy.InheritInfo; +import java.lang.reflect.Modifier; import javax.persistence.DiscriminatorType; import java.sql.Types; import java.util.ArrayList; @@ -64,7 +65,7 @@ public class DeployInheritInfo { * Return true if this is abstract node. */ public boolean isAbstract() { - return (discriminatorObjectValue == null); + return Modifier.isAbstract(type.getModifiers()); } /** @@ -205,7 +206,7 @@ public class DeployInheritInfo { } private void appendDiscriminator(List list) { - if (discriminatorObjectValue != null) { + if (!isAbstract()) { list.add(discriminatorObjectValue); } for (DeployInheritInfo child : children) {