Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
JPA EclipseLink在选择中是否支持子查询?类卡斯特例外_Jpa_Subquery_Eclipselink_Selection - Fatal编程技术网

JPA EclipseLink在选择中是否支持子查询?类卡斯特例外

JPA EclipseLink在选择中是否支持子查询?类卡斯特例外,jpa,subquery,eclipselink,selection,Jpa,Subquery,Eclipselink,Selection,使用Eclipse2.6.3,选择子查询将发出以下错误。 它在选择中支持子查询吗 CriteriaQuery query = criteriaBuilder.createQuery(String.class); Root root = query.from(Employee.class); Subquery subquery = query.subquery(String.class); Root subqueryRoot = subquery.collate(root); subquery.s

使用Eclipse2.6.3,选择子查询将发出以下错误。 它在选择中支持子查询吗

CriteriaQuery query = criteriaBuilder.createQuery(String.class);
Root root = query.from(Employee.class);
Subquery subquery = query.subquery(String.class);
Root subqueryRoot = subquery.collate(root);
subquery.select(subqueryRoot.get("name"));
query.select(subquery);

java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.querydef.SubQueryImpl cannot be cast to org.eclipse.persistence.internal.jpa.querydef.SelectionImpl
        at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryImpl.createCompoundQuery(CriteriaQueryImpl.java:511)
        at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryImpl.getDatabaseQuery(CriteriaQueryImpl.java:447)
        at org.eclipse.persistence.internal.jpa.querydef.CommonAbstractCriteriaImpl.translate(CommonAbstractCriteriaImpl.java:198)
        at org.eclipse.persistence.internal.jpa.querydef.CriteriaQueryImpl.translate(CriteriaQueryImpl.java:691)
        at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1551)

不能直接选择子查询,因为子查询的使用仅限于单个结果,因此必须在函数中使用它。根据EclipseLink的说法,EclipseLink支持在FROM子句中使用子查询,因此您可以尝试将其与CriteriaAPI类似地使用,尽管我不知道它是否有效