【问题标题】:JPA EclipseLink support subquery in selection? ClassCastExceptionJPA EclipseLink 在选择中支持子查询? ClassCastException
【发布时间】:2016-08-20 15:24:29
【问题描述】:

使用 Eclipse 2.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)

【问题讨论】:

    标签: jpa subquery eclipselink selection


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 2018-10-11
      相关资源
      最近更新 更多