这是我的域名的样子:
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<Field> fieldSet;
}
我想实现的是,如果我从数据库加载模板,则会自动加载 fieldConfig 和该 fieldconfig 的 fieldSet。
我当前的 JPQL:
TypedQuery<Template> 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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)