2010-08-11 5 views
1

j'ai le code suivant:NHibernate: alias dans les SqlProjection

Session.CreateCriteria<Foo>("foo") 
    .CreateAlias("foo.Bar", "bar") 
    .SetProjections(Projections.SqlProjection("bar.FirstName + ' ' + bar.LastName)); 

Le problème est avec l'alias de la table de bar dans le SqlProjection.

Les docs Hibernate disent que « la chaîne {alias} sera remplacé par l'alias de l'entité racine », mais ne donne aucune indication comment vous pouvez accéder aux alias pour les entités non-root.

Est-ce possible?

Répondre

0

Essayez ceci:

Session.CreateCriteria<Foo>() 
    .CreateCriteria("Bar") 
     .SetProjections(Projections.SqlProjection("FirstName + ' ' + LastName)"); 
1

I a une question similaire. Plus précisément, je voulais créer une projection qui était une concaténation de plusieurs domaines. Au lieu d'utiliser SqlProjection, je:

Projections.SqlFunction("concat", 
         NHibernateUtil.String, 
         Projections.Property("Field"), 
         Projections.Constant(" "), 
         Projections.Property("Field2", 
         Projections.Constant(" "), 
         Projections.Property("Field3") 
        ); 

Ceci est basé sur un test unitaire NHibernate: UsingSqlFunctions_Concat_WithCast. Cela fonctionne sur SQL Server, même si "concat" n'est pas une fonction native.