Java 按继承字段排序
比如说,我们有一些实体顺序Java 按继承字段排序,java,sql,hibernate,jpa,criteria-api,Java,Sql,Hibernate,Jpa,Criteria Api,比如说,我们有一些实体顺序 订单的“客户”字段类型为“客户” 我们还有另一个实体——SpecialClient,它是Client的子类。(InheritanceType已联接) 在SpecialClient类中,有字段“specialField” 如果我们可以假设所有订单“客户机”都是SpecialClient类型,那么是否可以从数据库中获取由“specialField”排序的订单列表 编辑-我想使用标准API进行编辑 我试过这样的方法: qCriteria.orderBy(qBuilder
- 订单的“客户”字段类型为“客户”
- 我们还有另一个实体——SpecialClient,它是Client的子类。(InheritanceType已联接)李>
- 在SpecialClient类中,有字段“specialField”
qCriteria.orderBy(qBuilder.asc(qRoot.get("client")
.as(SpecialClient.class).get("specialField")))
,,
但是片段:
as(SpecialClient.class).get("specialField"))
由于
as()
method返回的类型而不合法,您的查询是什么?“按o.client.specialField从订单o中选择o”?这是行不通的,因为specialField不是客户端的字段。但是您可以在JPQL中强制转换客户机字段。。。你试过了吗?我用的是与问题无关的标准。。。。您可以在JPQL中执行与在Criteria中相同的操作。问题是,除非您强制转换,否则无法引用子类中的某个字段。。。就像Java一样。因此,请执行我尝试过的强制转换(在标准中),但我不知道如何进行排序(qCriteria.orderBy()
),因此请展示您尝试过的内容。。。在问题中,而不是在评论中。铸造的关键字是TREAT,因此有一个关于该关键字的标准的方法