2010-04-20 5 views
0

Je ne trouve pas ce qui se passe avec nHibernate HQL.nHibernate HQL dynamic Instantiation question

voici mon code VB.Net:

Return _Session.GetNamedQuery("PersonAnthroSummary").SetInt32(0, 2).UniqueResult() 

Ma requête nommée:

<sql-query name="PersonAnthroSummary"> 
      select New PersonAnthroSummary(Anthro.Height, Anthro.Weight) from PersonAnthroContact as Anthro where Anthro.ID = ? 
    </sql-query> 

et j'importe la classe DTO:

<import class="xxxxxxx.DataServices.PersonAnthroSummary, xxxxxxx.DataServices"/> 

PersonAnthroSummary a un constructeur qui va prendre des arguments de taille et de poids.

quand je le tester, lancer NHibernate exception suivante:

{"Incorrect syntax near 'Anthro'."} 

et généré QueryString est:

"select New PersonAnthroSummary(Anthro.Height, Anthro.Weight) from PersonAnthroContact as Anthro where Anthro.ID = @p0" 

Peut-on me dire ce que je fais mal ici ?.

Répondre

0

Je l'ai compris. problème réel avec ma classe PersonAnthroSummary DTO, qui a un constructeur qui prend des arguments de type décimal. mais le mappage PersonAnthroContact, ces 2 colonnes mappées aux types dirrefent. J'ai changé le constructeur PersonAnthroSummary pour prendre ces types au lieu de décimales, puis son fonctionnement ....

1

Vous le déclarez comme une requête SQL au lieu d'une requête HQL.

Le nom de l'élément doit être <query>.

+0

Je l'ai changé de à , maintenant je reçois cette exception: "Erreurs dans les requêtes nommées : {PersonAnthroSummary} ". merci pour votre réponse. – Manohar

+0

Essayez * nouveau * au lieu de * Nouveau * –

+0

Bonjour Diego, j'ai essayé nouveau au lieu de New, mais je reçois la même erreur .. est thr de toute façon de connaître le problème réel .. à la place de ce message pas amical ... – Manohar