Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按继承字段排序_Java_Sql_Hibernate_Jpa_Criteria Api - Fatal编程技术网

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”
如果我们可以假设所有订单“客户机”都是SpecialClient类型,那么是否可以从数据库中获取由“specialField”排序的订单列表

编辑-我想使用标准API进行编辑

我试过这样的方法:

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,因此有一个关于该关键字的标准的方法