gpt4 book ai didi

java - jpa fetch 连接查询

转载 作者:行者123 更新时间:2023-12-04 06:07:24 25 4
gpt4 key购买 nike

这是我的域的外观:

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 的 db 和该 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);

我的异常(exception):
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"

关于java - jpa fetch 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8195252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com