JPA / Hibernate Sélectionner un sous-ensemble de colonnes sur la jointure
Question
En SQL, il est facile de faire une jointure et de ne renvoyer que les colonnes souhaitées à partir de la table jointe. Quel est le meilleur moyen de mapper cela dans JPA / Hibernate?
Par exemple, il existe une entité Dossier mappée sur EMAIL_FOLDER et une entité Email mappée sur la table EMAIL. Il existe une relation un à plusieurs de Dossier à Email. L'entité Email est plutôt lourde car elle contient des objets CLOB du texte, des pièces jointes, etc. Il existe des cas dans lesquels nous devons récupérer l'intégralité de l'e-mail et d'autres cas dans lesquels nous souhaitons simplement ramener senderName, subject et sentDate. ne veulent pas la surcharge de mémoire liée à la saisie des données CLOB. Accomplir ceci en SQL est simple, mais je ne suis pas sûr de la meilleure approche à adopter dans JPA / Hibernate.
Je songe à créer un LightEmail qui mappe uniquement sur senderName, subject et sentDate. Est-ce la meilleure façon de gérer quelque chose comme ça?
Mise à jour: À ce stade, j'aimerais éviter si possible l'instrumentation du code octet.
La solution
Annotez la propriété (le CLOB) en tant que @Basic (fetch = FetchType.LAZY)
Voir Déclaration de mappages de propriétés de base dans la référence Hibernate