/ / CreateSqlQuery en entidad con propiedad de fórmula - nhibernate

CreateSqlQuery en entidad con propiedad de fórmula - nhibernate

Cuando intento consultar una tabla usando CreateSqlQuery y convertirla en una entidad que contiene la propiedad de fórmula, obtengo la Adoexception a continuación.

"El valor no puede ser nulo. Nombre del parámetro: fieldName "

En primer lugar, ¿es posible usar el createqlquery en la entidad que tiene mapeo de fórmulas?

Respuestas

7 para la respuesta № 1

Es posible utilizar CreateSQLQuery con fórmulas

Aquí hay una prueba de concepto. Mapeo (la clase no es difícil de adivinar):

<class name="Foo">
<id name="Id">
<generator class="hilo"/>
</id>
<property name="Data"/>
<property name="DataX2" formula="Data * 2"/>
</class>

Y aquí hay una consulta:

var foos = session.CreateSQLQuery(
@"
select Id          as {foo.Id},
Data        as {foo.Data},
Data + Data as {foo.Data2}
from   Foo
")
.AddEntity("foo", typeof(Foo))
.List<Foo>();

Si observa detenidamente, verá que estoy usando una fórmula diferente a la declarada en el mapeo. NHibernate permite cualquier cosa siempre que todas las propiedades estén en la consulta.

Te sugiero que leas 17.1.2. Consultas de la entidad y los siguientes puntos.


1 para la respuesta № 2

Después de mucho buscar, encontré lo siguiente

https://issues.jboss.org/browse/JBPAPP-6571

Parece que este es un error real en hibernación que han decidido no solucionar. Hay algunas soluciones. Creo que lo mejor es usar alias para nombres de propiedad. Los alias deben usarse como se documenta aquí:

http://nhibernate.info/doc/nh/en/index.html#querysql-aliasreferences