2010-07-07 6 views
2

Je suis nouveau sur NHibernate. J'utilise des éléments de propriété suivants dans mon fichier HBM ...NHibernate - Sélectionner la requête dans l'attribut Formule de l'élément Property ne fonctionne pas

<property name="CountryId" length="4" /> 
<property name="CountryForCustomer" 
       formula="(SELECT * 
          FROM SystemCountry 
          WHERE SystemCountry.CountryId = CountryId)" /> 

Ici, je suis en train d'obtenir les détails du pays CountryId que j'ai dans une autre table.

Propriété "CountryForCustomer" est du type "SystemCountry" personnalisé.

Mais cette requête dans la formule ne fonctionne pas .. Alors, s'il vous plaît, aidez-moi à résoudre ce problème.

Merci à l'avance ....

Répondre

2

devrait-il pas être

SELECT SystemCountry.Country FROM SystemCountry WHERE... 

comme * renverrait plusieurs colonnes de la requête

modifier Si vous voulez retourner l'ensemble objet à l'époque l'élément property n'est pas votre ami ici. Qu'est-ce que vous voulez faire est de regarder l'élément many-to-one, notez que ce n'est qu'une façon de le faire.

<many-to-one name="CmsTemplate" column="TemplateId" .. 

par exemple. here ou here

+0

ok, obtenu votre point .. Mais je veux objet entier du pays à utiliser et pas seulement une valeur de colonne .. alors comment réaliser qu'en utilisant le mappage de fichiers hbm ..? –

+0

plusieurs-à-un est définitivement la solution ici. –

+0

Maintenant, cette solution fonctionne mais il y a un problème ... Lorsque j'introduis des données ou que je met à jour les données (en utilisant la méthode SaveorUpdate de NHibernate), les données associées ne sont pas associées à l'élément "many-to-one". ont mis les attributs "insert" et "update" à false car les garder vrai donne l'erreur -> IndexOutOfRangeException -> "Index invalide 52 pour ce SqlParameterCollection avec Count = 52." Alors, comment aller de l'avant ..? –

0

la mise en correspondance de formule ne correspond pas à sa valeur de la base de données, cartes de sa valeur de l'ensemble de données qui est chargé dans la session

Questions connexes