From 4f67d2be4eec43b0cd0ab35eb40b028b9cb378ec Mon Sep 17 00:00:00 2001 From: rbygrave Date: Thu, 30 Apr 2015 20:30:12 +1200 Subject: [PATCH] Attempt to create test case for #281 - test case not failing --- .../deploy/meta/DeployBeanDescriptor.java | 3 ++ .../avaje/tests/inheritance/InnerReport.java | 43 +++++++++++++++++++ .../tests/inheritance/Stockforecast.java | 21 +++++++++ .../inheritance/TestNpeOnDiscriminator.java | 23 ++++++++++ 4 files changed, 90 insertions(+) create mode 100644 src/test/java/com/avaje/tests/inheritance/InnerReport.java create mode 100644 src/test/java/com/avaje/tests/inheritance/Stockforecast.java create mode 100644 src/test/java/com/avaje/tests/inheritance/TestNpeOnDiscriminator.java diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java index 4bf8927b6..4ad63d1e9 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java @@ -729,6 +729,9 @@ public class DeployBeanDescriptor { return null; } String selectClause = sb.toString(); + if (selectClause.length() == 0) { + throw new IllegalStateException("Bean " + getFullName() + " has no properties?"); + } return selectClause.substring(0, selectClause.length() - 1); } diff --git a/src/test/java/com/avaje/tests/inheritance/InnerReport.java b/src/test/java/com/avaje/tests/inheritance/InnerReport.java new file mode 100644 index 000000000..e6995e081 --- /dev/null +++ b/src/test/java/com/avaje/tests/inheritance/InnerReport.java @@ -0,0 +1,43 @@ +package com.avaje.tests.inheritance; + +import javax.persistence.*; + +/** + */ +@Entity +public class InnerReport { + + @Id + Long id; + + String name; + + @OneToOne + Forecast forecast; + + public Forecast getForecast() { + return forecast; + } + + public void setForecast(Forecast forecast) { + this.forecast = forecast; + } + + + @Entity + @DiscriminatorValue("F") + public static class Forecast extends Stockforecast { + + @ManyToOne + InnerReport innerReport; + + public InnerReport getInnerReport() { + return innerReport; + } + + public void setInnerReport(InnerReport innerReport) { + this.innerReport = innerReport; + } + } + +} diff --git a/src/test/java/com/avaje/tests/inheritance/Stockforecast.java b/src/test/java/com/avaje/tests/inheritance/Stockforecast.java new file mode 100644 index 000000000..8f96ee497 --- /dev/null +++ b/src/test/java/com/avaje/tests/inheritance/Stockforecast.java @@ -0,0 +1,21 @@ +package com.avaje.tests.inheritance; + +import javax.persistence.*; + + +@Entity +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) +public abstract class Stockforecast { + + @Id + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/src/test/java/com/avaje/tests/inheritance/TestNpeOnDiscriminator.java b/src/test/java/com/avaje/tests/inheritance/TestNpeOnDiscriminator.java new file mode 100644 index 000000000..6feaab5cc --- /dev/null +++ b/src/test/java/com/avaje/tests/inheritance/TestNpeOnDiscriminator.java @@ -0,0 +1,23 @@ +package com.avaje.tests.inheritance; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.ebean.Ebean; +import org.junit.Test; + +public class TestNpeOnDiscriminator extends BaseTestCase { + + @Test + public void test() { + + InnerReport report = Ebean.json().toBean(InnerReport.class, "{}"); + Ebean.save(report); + + // other service ... + InnerReport.Forecast f = new InnerReport.Forecast(); + report.setForecast(f); + f.innerReport = report; + + Ebean.save(f); + + } +}