web-dev-qa-db-ja.com

Querydslはクエリでフェッチモードを設定します

カードエンティティが個人への外部キーを持っている状況があります。

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

助けてくれてありがとう。

17
Marko

試しましたか

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

QueryDSL4.0.2 +の場合

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