一尘不染

Querydsl在查询中设置获取模式

hibernate

我遇到的情况是,卡实体具有某个人的外键。

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);

谢谢你的帮助。


阅读 244

收藏
2020-06-20

共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();
2020-06-20