2010-09-01 4 views
3

J'utilise NHibernate pour sélectionner une entité à partir d'une base de données Oracle via ODBC.OverFlowException sur Oracle ODBC RowCount

Cela fonctionne très bien sur un système 32 bits, mais sur x64 l'erreur suivante se produit: Il semble que le rowcount n'est pas dans un format correct?

(partie ODBC)

Arithmetic operation resulted in an overflow. 

    at System.Data.Odbc.OdbcStatementHandle.RowCount(SQLLEN& rowCount) 
    at System.Data.Odbc.OdbcDataReader.GetRowCount() 
    at System.Data.Odbc.OdbcDataReader.FirstResult() 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod) 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader) 
    at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior) 
    at System.Data.Odbc.OdbcCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() 
    at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) 
    at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor  session) 
    at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean  returnProxies) 
    at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, String  optionalEntityName, Object optionalIdentifier, IEntityPersister persister) 

(partie NHibernate, mais je doute que le problème se trouve ici):

could not load an entity: (Simple NHIbernate Query, works on x86) 

    at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, String  optionalEntityName, Object optionalIdentifier, IEntityPersister persister) 
    at NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId) 
    at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session) 
    at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session) 
    at NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType  options) 
    at NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) 
    at NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) 
    at NHibernate.Event.Default.DefaultLoadEventListener.ProxyOrLoad(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options) 
    at NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent event, LoadType loadType) 
    at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType loadType) 
    at NHibernate.Impl.SessionImpl.Get(String entityName, Object id) 
    at NHibernate.Impl.SessionImpl.Get(Type entityClass, Object id) 
    at NHibernate.Impl.SessionImpl.Get[T](Object id) 

Répondre

3

Apparemment, ce problème est connu:

http://forums.oracle.com/forums/message.jspa?messageID=4548988

citation du site Web ci-dessus:

C'est un problème connu - bug 9793452.

Ce n'est pas NHibernate qui appelle rowcount, c'est le framework .NET. Si je me souviens bien, il y a un correctif disponible pour 11.2 dans les derniers niveaux de correctif. Des rétroliens vers 10204 et 10205 sont en cours. Le comportement ne se produit pas sur 11107.