Querydsl ensemble mode de lecture dans une requête
J'ai une situation où une Carte entité a une clé étrangère d'une Personne.
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;
}
}
La valeur par défaut type d'extraction pour la personne qui est PARESSEUX. Puis-je indiquer le type d'extraction à la HÂTE dans une requête:
QCard qCard = QCard.card;
JPQLQuery query = getQuery().from(qCard);
query.list(qCard);
Merci pour toute aide.
Vous pouvez simplement appeler le
La raison pour laquelle je veux changer le type d'extraction est d'optimiser la requête. J'ai un cas où j'ai besoin de charger plusieurs clés étrangères des objets. Il semble fonctionner lente.
Si vous êtes à la recherche pour le
Il semble être ce que je suis à la recherche pour. Je vais faire un essai et écrire les résultats. Si je peux juste ajouter quelque chose comme cela pour chaque clé étrangère objet désireux de charge: de la requête".innerJoin(qCard.personne).fetch();"
J'ai ajouté de la requête".innerJoin(qCard.cmsPerson).fetchAll ();", mais il reste paresseux récupère l'objet personne.
getPerson()
méthode pour charger la Personne de l'objet avant que votre objet est détachée, vous avez une bonne raison de changer le type d'extraction ?La raison pour laquelle je veux changer le type d'extraction est d'optimiser la requête. J'ai un cas où j'ai besoin de charger plusieurs clés étrangères des objets. Il semble fonctionner lente.
Si vous êtes à la recherche pour le
FETCH
mot clé de JPAQL dans QueryDSL. Est-ce cela que vous cherchez ? groups.google.com/forum/#!msg/querydsl/Geexg_eN2yA/iREXf-DM0nwJIl semble être ce que je suis à la recherche pour. Je vais faire un essai et écrire les résultats. Si je peux juste ajouter quelque chose comme cela pour chaque clé étrangère objet désireux de charge: de la requête".innerJoin(qCard.personne).fetch();"
J'ai ajouté de la requête".innerJoin(qCard.cmsPerson).fetchAll ();", mais il reste paresseux récupère l'objet personne.
OriginalL'auteur Marko | 2014-05-13
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé
Pour QueryDSL 4.0.2+
S'il vous plaît mettez votre code de travail dans une réponse et la marque de ce problème comme résolu
Timo la réponse de travaux. Personne est extraite avec impatience si j'utilise fetch(), mais pas si je utiliser fetchAll().
Comme de QueryDSL 4.0.2, l'interface a changé. Pour définir le mode de lecture de la dernière joindre, appelez fetchJoin(). Enfin pour obtenir les résultats, appel fetch(). Donc, ce serait une Liste<Carte - > = cartes getQuery().à partir de(qCard) .innerJoin(qCard.personne).fetchJoin() .fetch();
OriginalL'auteur Timo Westkämper