From cfaedcdbc50a63001f9ba3330b9cb4136c5169af Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Thu, 10 May 2018 17:20:09 +1200 Subject: [PATCH] #1371 - Regression in 11.15.5 with @Inheritance on abstract class with discriminatorType = INTEGER --- .../server/deploy/parse/DeployInherit.java | 13 ++--- .../abstrakt/AbstractBaseBlock.java | 48 +++++++++++++++++++ .../org/tests/inheritance/abstrakt/Block.java | 19 ++++++++ .../abstrakt/TestInheritanceNum.java | 18 +++++++ 4 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 src/test/java/org/tests/inheritance/abstrakt/AbstractBaseBlock.java create mode 100644 src/test/java/org/tests/inheritance/abstrakt/Block.java create mode 100644 src/test/java/org/tests/inheritance/abstrakt/TestInheritanceNum.java 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); + } +}