我有一个 JPA 类型查询连接问题。当我使用以下代码时
SELECT cve from CubeValuesEntity cve inner join CubeConfigEntity cce
on cve.cubeConfigId=cce.cubeConfigId
我收到一个 QuerySyntaxException:需要加入的路径!我相信该错误的修复如下
SELECT cve from CubeValuesEntity cve inner join cve.CubeConfigEntity cce
on cve.cubeConfigId=cce.cubeConfigId
但是我现在得到 QueryException: 无法解析属性: CubeConfigEntity 这根本没有任何意义。
这是我使用的实际java代码:
TypedQuery<CubeValuesEntity> query = em.createQuery(
"SELECT cve from CubeValuesEntity cve inner join cve.CubeConfigEntity cce on cve.cubeConfigId=cce.cubeConfigId where " + "cce.cubeType = :cubeType
and cce.name = :name and cve.axisType = :axisType", CubeValuesEntity.class)
.setParameter("cubeType", cubeType).setParameter("name", name).setParameter("axisType", axisType);
return query.getResultList();
这是我的实体
public class CubeValuesEntity extends AbstractDomainObject {
private static final long serialVersionUID = 1L;
private int cubeValueId;
private int cubeConfigId;
private String axisType;
private int axisNumber;
private String axisLabel;
private BigDecimal axisFactor;
public class CubeConfigEntity extends AbstractDomainObject {
private int cubeConfigId;
private String cubeType;
private String name;
private String yAxisName;
private Integer yAxisCubeSize;
private String xAxisName;
private Integer xAxisCubeSize;
private String reductionType;
private BigDecimal midLowRange;
private BigDecimal midHighRange;
感谢您的帮助。
最佳答案
我相信您在这里混合了 JQL 和 SQL。
假设 CubeValuesEntity 和 CubeConfigEntity 之间存在 XToOne 关系,即名为“cubeConfig”的属性:
- 忘记“on”关键字 - 那是 SQL,它由点分表达式及其映射暗示
- “无法解析属性:CubeConfigEntity”似乎合乎逻辑,因为这是实体名称,而不是属性
所以,只需尝试一下:
"SELECT cv from CubeValuesEntity cv inner join cv.cubeConfig cc where..."
br, 延斯
关于java - 未找到 JPA 内连接路径且未找到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645626/