Hola gente,

Estoy empezando a usar NHibernate para acceder a nuestro viejo AS400
en mi empresa. Me he creado 3 entidades y sus mapeos y estoy jugando
un poco.
Las primeras pruebas las he hecho usando LinQ para seleccionar los
resultados y todo me ha ido bien, pero al incorporar un test de otro
proyecto donde verifico que todos los mappings son correctos y puedo
acceder a todas las entidades mapeadas me está dando un error, me
suelta toda la SQL que ejecuta y me dice:

El método de prueba
KioskoCartaPago.Tests.TestsDominio.ExistenMappingsDeHibernateYTodosEstanCorrectos
produjo la excepción:  NHibernate.Exceptions.GenericADOException:
could not execute query
[ .. "Sentencia select SQL (No la pongo por que es muy larga)" .. ] ---
>  System.InvalidOperationException: El objeto que acepta valores Null
debe tener un valor..

System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource
resource)
NHibernate.Dialect.DB2Dialect.GetLimitString(SqlString querySqlString,
Int32 offset, Int32 limit, Nullable`1 offsetParameterIndex, Nullable`1
limitParameterIndex) en d:\CSharp\NH\nhibernate\src\NHibernate\Dialect
\DB2Dialect.cs: línea 218
NHibernate.Loader.Loader.PrepareQueryCommand(QueryParameters
queryParameters, Boolean scroll, ISessionImplementor session) en d:
\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs: línea 1119
NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies) en d:\CSharp\NH
\nhibernate\src\NHibernate\Loader\Loader.cs: línea 399
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
session, QueryParameters queryParameters, Boolean returnProxies) en d:
\CSharp\NH\nhibernate\src\NHibernate\Loader\Loader.cs: línea 236
NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters) en d:\CSharp\NH\nhibernate\src
\NHibernate\Loader\Loader.cs: línea 1665
Emuasa.KioskoCartaPago.Tests.TestsDominio.ExistenMappingsDeHibernateYTodosEstanCorrectos()
en C:\Desarrollo\Net\KioskoNotasPago\Emuasa.KioskoCartaPago.Tests
\TestsDominio.cs: línea 99

La cosa es que he ejecutado la query SQL sobre el AS400 y funciona
bien.

De hecho ya había probado antes algunas cosas e iban bien, entonces
busqué cual es la diferencia entre las pruebas anteriores y ésta,
hasta que encontré la diferencia; El error me surge cuando uso
"SetMaxResult"

Básicamente es esto, la primera sentencia me da el error, la segunda
funciona bien sin problemas:

 
sesion.CreateCriteria(typeof(Abon)).SetMaxResults(1).Add(Restrictions.Eq("ABPOLI",
201688 )).List<Abon>();
 
sesion.CreateCriteria(typeof(Abon)).Add(Restrictions.Eq("ABPOLI",
201688 )).List<Abon>();

Como información adicional deciros que uso este Dialecto:
NHibernate.Dialect.DB2400Dialect
sobre este driver: NHibernate.Driver.OdbcDriver

Un saludo,


-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a