J'ai une telle structure de domaine (par exemple, le code pseudo):NHibernate cartographie spécifique ("sélection avec grand-parent")
class Room
{
Id: long
Shelves: list of Shelf
}
class Shelf
{
Id: long
Room: Room class (room_id column)
Books: list of Book
}
class Book
{
Id: long (id column)
Shelf: Shelf class (shelf_id column)
Room: Room class (room_id column)
Title: string (title column)
}
Chaque collection est paresseux. J'aimerais savoir s'il existe un moyen de récupérer tous les livres d'une pièce (sans sous-sélection) lorsque j'accède à la propriété d'un étagère paresseusement.
Quand je reçois chambre, NHibernate récupère la chambre seulement (select * from rooms r where ...
), quand j'accéder à la propriété des étagères, NHibernate va chercher toutes les étagères pour cette chambre (select * from shelves s where s.room_id = X
), quand j'accéder à la propriété Livres il charge livres pour la seule tablette (ce qui est Normalement en général), mais ...
Dans mon cas, si j'accède au livre, il y a de fortes chances que je travaille avec d'autres livres de cette pièce aussi, donc si je touche le livre je veux précharger tous les livres pour cela salle et les mettre sur leurs étagères.
La caractéristique la plus proche de nhibernate est fetch='subselect'
. Mais il est inutile de sélectionner dans mon cas, car je peux chercher des livres pour cette pièce par room_id: select * from books b where b.room_id = x
.
Existe-t-il un moyen de le faire?
Merci!