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 ce6bc1853..749d597f1 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java +++ b/src/main/java/io/ebeaninternal/server/deploy/parse/DeployInherit.java @@ -123,13 +123,14 @@ public class DeployInherit { info.setColumnDefn(da.columnDefinition()); } - DiscriminatorValue dv = AnnotationUtil.findAnnotation(cls, DiscriminatorValue.class); // do not search recursive - if (dv != null) { - info.setDiscriminatorValue(dv.value()); - } else { - info.setDiscriminatorValue(cls.getSimpleName()); + if (!info.isAbstract()) { + 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/test/java/org/tests/inheritance/abstrakt/AbstractBaseBlock.java b/src/test/java/org/tests/inheritance/abstrakt/AbstractBaseBlock.java new file mode 100644 index 000000000..334752405 --- /dev/null +++ b/src/test/java/org/tests/inheritance/abstrakt/AbstractBaseBlock.java @@ -0,0 +1,48 @@ +package org.tests.inheritance.abstrakt; + +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.Table; +import javax.persistence.Version; + +@Entity +@Table(name = "block") +@Inheritance +@DiscriminatorColumn(name = "case_type", discriminatorType = DiscriminatorType.INTEGER) +public abstract class AbstractBaseBlock { + + @Id + long id; + + String name; + + @Version + long version; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public long getVersion() { + return version; + } + + public void setVersion(long version) { + this.version = version; + } +} diff --git a/src/test/java/org/tests/inheritance/abstrakt/Block.java b/src/test/java/org/tests/inheritance/abstrakt/Block.java new file mode 100644 index 000000000..ea0297de1 --- /dev/null +++ b/src/test/java/org/tests/inheritance/abstrakt/Block.java @@ -0,0 +1,19 @@ +package org.tests.inheritance.abstrakt; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity +@DiscriminatorValue(value = "2") +public class Block extends AbstractBaseBlock { + + String notes; + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } +} diff --git a/src/test/java/org/tests/inheritance/abstrakt/TestInheritanceNum.java b/src/test/java/org/tests/inheritance/abstrakt/TestInheritanceNum.java new file mode 100644 index 000000000..42f36d263 --- /dev/null +++ b/src/test/java/org/tests/inheritance/abstrakt/TestInheritanceNum.java @@ -0,0 +1,18 @@ +package org.tests.inheritance.abstrakt; + +import io.ebean.BaseTestCase; +import io.ebean.Ebean; +import org.junit.Test; + +public class TestInheritanceNum extends BaseTestCase { + + @Test + public void basicIUD() { + + Block block = new Block(); + block.setName("ibe"); + block.setNotes("try it"); + + Ebean.save(block); + } +}