jpa获取连接查询

这是我的域名的样子:

public class Template implements Serializable { private static final long serialVersionUID = 1L; @OneToOne(cascade=CascadeType.ALL) private FieldConfig fieldConfig; } public class FieldConfig implements Serializable { private static final long serialVersionUID = 1L; @OneToMany(cascade= CascadeType.PERSIST) @JoinColumn(name = "fieldConfigId") private Set fieldSet; } 

我希望实现,如果我从自动加载fieldConfig的db和该fieldconfig的fieldSet加载模板。

我目前的JPQL:

 TypedQuery query = em.createQuery("SELECT t from Template t LEFT JOIN FETCH t.fieldConfig" + " fconfig LEFT JOIN FETCH fconfig.fieldSet where t.id = :id", Template.class); 

我的例外:

 Internal Exception: NoViableAltException(80@[()* loopback of 477:9: (node= join )*]) Exception Description: Syntax error parsing the query [SELECT t from Template t LEFT JOIN FETCH t.fieldConfig fconfig LEFT JOIN FETCH fconfig.fieldSet where t.id = :id], line 1, column 55: unexpected token [fconfig]. 

有关创建此类查询的任何想法?

您不能在JPQL中的连接提取中使用别名,规范不允许这样做。

EclipseLink允许通过查询提示进行嵌套连接提取,

 "eclipselink.join-fetch"="t.fieldConfig.fieldSet"