Java 单表继承子类的JPA查询

Java 单表继承子类的JPA查询,java,jakarta-ee,jpa,criteria-api,java-ee-7,Java,Jakarta Ee,Jpa,Criteria Api,Java Ee 7,假设我拥有以下实体: @实体 公营货柜 { @独身癖 设置元素; //getter setter和其他属性。。。 } @实体 @InheritanceFosterategy=InheritanceType.SINGLE\u表 @DiscriminatorColumnname=CLASS_代码,discriminatorType=discriminatorType.STRING,长度=10 公共抽象类AbstractElement扩展了AbstractEntity { @短暂的 T值; //get

假设我拥有以下实体:

@实体 公营货柜 { @独身癖 设置元素; //getter setter和其他属性。。。 } @实体 @InheritanceFosterategy=InheritanceType.SINGLE\u表 @DiscriminatorColumnname=CLASS_代码,discriminatorType=discriminatorType.STRING,长度=10 公共抽象类AbstractElement扩展了AbstractEntity { @短暂的 T值; //getter setter和其他属性。。。 } @鉴别器值=布尔 @实体 公共类BooleanElement扩展了AbstractElement { /** *{@inheritardoc} */ @Columnname=VALUE\u BOOL @凌驾 公共布尔值 { 返回super.getValue; } } 问题是:

如何从类容器开始对BooleanElement的值执行jpa条件查询

到目前为止,我实际掌握的是:

CriteriaQuery CriteriaQuery=criteriaBuilder.createQueryContainer.class; Root-from=criteriaQuery.fromContainer.class; criteriaQuery.selectfrom; from=from.joinelements; 谓词pred=criteriaBuilder.equalcriteriaBuilder.treatfrom,BooleanElement.class.getvalue,FOO; //等等。。。。。。 此时的例外是AbstractEntity上没有值属性


提前感谢。

在这种特殊情况下,Treat操作员不工作。 连接上的as运算符仍然不清楚如何实现:执行此操作时,我在第3行遇到类强制转换异常:

CriteriaQuery<AbstractElement> criteriaQuery = criteriaBuilder.createQuery(AbstractElement.class);
Root<AbstractElement> rootAbstract = criteriaQuery.from(AbstractElement.class);
Path predPath = (Path)rootAbstract.as(BooleanElement.class);
predPath.get("value");
执行此类查询的唯一方法是执行子查询 或创建附加from子句:

Root<BooleanElement> from2 = criteriaQuery.from(BooleanElement.class);
Predicate joinPredicate = criteriaBuilder.equal(from, from2);
....