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