Skip to content

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

@tbee

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