Skip to content

@Inheritance / DiscriminatorColumn stops working in EBean 15 (upgrade from 14) #3475

Description

@tbee

Given these classes:

@Entity
@Table(name = "product")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.INTEGER)
public abstract class Product extends BaseWithSave<Product> implements RegistrationProduct, Transferable<ProductTO>, Auditable {
}
@Entity
@DiscriminatorValue("0")
public class OtherProduct extends Product {
}

The annotations are in the jakarta.persistence package.

Expected behavior

This should work:

  DB.find(Product.class).findList();

Actual behavior

java.lang.UnsupportedOperationException: cannot create entity bean for abstract entity Product
at deployment.ioserver.ear//io.ebeaninternal.server.deploy.BeanDescriptor.createEntityBean(BeanDescriptor.java:1405)
at deployment.ioserver.ear//io.ebeaninternal.server.deploy.BeanDescriptor.createEntityBean2(BeanDescriptor.java:1445)
at deployment.ioserver.ear//io.ebeaninternal.server.query.SqlTreeLoadBean$Load.initBeanType(SqlTreeLoadBean.java:129)
at deployment.ioserver.ear//io.ebeaninternal.server.query.SqlTreeLoadBean$Load.initialise(SqlTreeLoadBean.java:308)
at deployment.ioserver.ear//io.ebeaninternal.server.query.SqlTreeLoadBean$Load.perform(SqlTreeLoadBean.java:320)
at deployment.ioserver.ear//io.ebeaninternal.server.query.SqlTreeLoadBean.load(SqlTreeLoadBean.java:343)
at deployment.ioserver.ear//io.ebeaninternal.server.query.SqlTreeLoadRoot.load(SqlTreeLoadRoot.java:26)
at deployment.ioserver.ear//io.ebeaninternal.server.query.CQuery.readNextBean(CQuery.java:389)
at deployment.ioserver.ear//io.ebeaninternal.server.query.CQuery.hasNext(CQuery.java:466)
at deployment.ioserver.ear//io.ebeaninternal.server.query.CQuery.readCollection(CQuery.java:495)
at deployment.ioserver.ear//io.ebeaninternal.server.query.CQueryEngine.findMany(CQueryEngine.java:343)
at deployment.ioserver.ear//io.ebeaninternal.server.query.DefaultOrmQueryEngine.findMany(DefaultOrmQueryEngine.java:126)
at deployment.ioserver.ear//io.ebeaninternal.server.core.OrmQueryRequest.findList(OrmQueryRequest.java:380)
at deployment.ioserver.ear//io.ebeaninternal.server.core.DefaultServer.findList(DefaultServer.java:1329)
at deployment.ioserver.ear//io.ebeaninternal.server.core.DefaultServer.findList(DefaultServer.java:1311)
at deployment.ioserver.ear//io.ebeaninternal.server.querydefn.DefaultOrmQuery.findList(DefaultOrmQuery.java:1489)
at deployment.integration-test.war//com.nedap.healthcare.administration.finance.TestProductFinder.simple(TestProductFinder.java:38)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)```

Somehow it tries to instantiate the abstract class or something. Continuing the investigation

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions