Pergunta

Eu tenho esta consulta:

criteria = session.CreateCriteria(typeof (Building))
    .CreateAlias("Estate", "estate")
    .SetProjection(Projections.ProjectionList()
                       .Add(Property.ForName("Name"), "BuildingName")
                       .Add(Property.ForName("estate.Name"), "EstateName")
                       .Add(Projections.SqlProjection(
                                "(estate1_.BBRMunicipalityNumber + '-' + estate1_.BBREstateNumber + '-' + {alias}.BBRBuildingNumber)" + " as BBRNumber",
                                new[] { "BBRNumber" },
                                new[] { NHibernateUtil.String }),
                            "BBRNumber"))

Existe uma maneira que eu possa obter o alias SQL para "propriedade" como escrever {propriedade} na cadeia de SQL? {Propriedade} não funciona. Agora acabei hardcoding o alias na cadeia de SQL, mas que não parece muito sólido.

Se eu entender os documentos corretamente isso deve ser possível. Estou usando NH2.0.1.

/ Asger

Foi útil?

Solução

Não é uma resposta directa à sua pergunta, mas: Por que não consultar os três valores separadamente e fazer a concatenação em seu código em vez de usar o banco de dados para isso?

Para responder à sua pergunta: Em Hibernate v3 (java, sorry) há um getColumnAlias ?? método na interface de projecção. Eu não sou capaz de encontrar o seu homólogo em NHibernate.

Felicidades

Outras dicas

Você pode usar {apelido} -. Fará referência ao apelido da actual projecção

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top