J'ai deux tables. Facture avec les colonnes CustomerID, InvoiceDate, Value, InvoiceTypeID (CustomerID et InvoiceDate constituent une clé composite) et InvoiceType avec les colonnes InvoiceTypeID et InvoiceTypeName.Nhibernate/Hibernate, tables de recherche et design d'objets
Je sais que je peux créer mes objets comme:
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceType InvoiceType { get; set; }
}
public class InvoiceType
{
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
Ainsi, le SQL généré ressemblerait à quelque chose comme:
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID FROM Invoice WHERE CustomerID = x AND InvoiceDate = y
SELECT InvoiceTypeID, InvoiceTypeName FROM InvoiceType WHERE InvoiceTypeID = z
Mais plutôt que d'avoir deux requêtes SELECT exécutées pour récupérer les données que je voudrais plutôt en avoir un. Je voudrais également éviter d'utiliser l'objet enfant pour les listes de recherche simples. Donc, mon objet ressemblerait à quelque chose comme:
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
Et mon sql ressemblerait à quelque chose comme:
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID
FROM Invoice INNER JOIN InvoiceType ON Invoice.InvoiceTypeID = InvoiceType.InvoiceTypeID
WHERE CustomerID = x AND InvoiceDate = y
Ma question est de savoir comment puis-je créer le mappage pour cela?
J'ai essayé d'utiliser join, mais j'ai essayé de joindre avec CustomerID et InvoiceDate, est-ce que quelque chose me manque?
Merci
Merci pour la réponse, mais comment faites-vous réellement cela? Où spécifiez-vous cette HQL? Dans la cartographie? Dans le code? Je ne comprends toujours pas comment ajouter la table de recherche dans le mappage. Merci. – lancscoder
J'ai mis à jour ma réponse avec du code supplémentaire pour mieux l'expliquer. Lorsque vous avez besoin de données de facturation, vous exécutez une telle requête dans votre code OO, oui. –