查询中的 Querydsl set fetch mode

2022-09-02 21:14:32

我有一个情况,一个卡实体有一个外键给一个人。

public class Card implements java.io.Serializable {
    private String cardid;
    private Person person;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USERID")
    public Person getPerson() {
        return this.person;
    }
}

此人的默认提取类型是 LAZY。我可以在查询中将抓取类型指定为 EAGER:

QCard qCard = QCard.card;
JPQLQuery query = getQuery().from(qCard);
query.list(qCard);

感谢您的任何帮助。


答案 1

你试过吗

QCard qCard = QCard.card;
List<Card> cards = getQuery().from(qCard)
    .innerJoin(qCard.person).fetch()
    .list(qCard);

对于 QueryDSL 4.0.2+

QCard qCard = QCard.card;
List<Card> cards = getQuery().from(qCard)
    .innerJoin(qCard.person).fetchJoin()
    .select(qCard).fetch();

答案 2

推荐