Hallo,
ich habe ein seltsames Problem beim Zugriff auf ein Oracle DateTime Feld. Bei einigen Einträgen der Relation klappt das Mapping mit NHibernate, bei anderen nicht. Ich kann keinen erkennbaren unterschied in den Daten der entsprechenden Felder festellen (abgesehen davon, dass die Zeitangaben leicht variieren).
Im Mapping File steht folgendes:
<property column="EINGANGSDATUM" type="DateTime" name="EingangsDatum" not-null="false"/>
Es handelt sich um ein Feld der Relation Bestellungen. Ich versuche wie folgt darauf zuzugreifen:
ICriteria crit = session.CreateCriteria(typeof(Bestellungen));
ArrayList list = (ArrayList)crit.List();
Was mache ich falsch? Es handelt sich um eine bestehende Relation mit einer Reihe von Einträgen. Das Feld bei dem es schief läuft ist wie gesagt ein DateTime Feld, die Daten sind alle auf die gleiche Weise eingefügt worden. Wenn das Feld leer ist, dann klappt es und bei einigen Tupeln klappt es auch mit einem Wert im Feld.
Wenn ich bei den Tupeln, bei denen ein Fehler auftritt, das Feld lösche, dann funktioniert es danach auch. Es ist aber kein Erkennbarer Unterschied in den Daten zu sehen!
Hibernate version:1.2.0.4000
Full stack trace of any exception that occurs: System.ArgumentOutOfRangeException: Die Parameter "Hour", "Minute" und "Second" beschreiben eine nicht darstellbare DateTime. bei System.DateTime.TimeToTicks(Int32 hour, Int32 minute, Int32 second) bei System.Data.OracleClient.OracleDateTime.ToDateTime(Byte[] rawValue) bei System.Data.OracleClient.OracleDateTime.MarshalToDateTime(NativeBuffer buffer, Int32 valueOffset, Int32 lengthOffset, MetaType metaType, OracleConnection connection) bei System.Data.OracleClient.OracleColumn.GetDateTime(NativeBuffer_RowBuffer buffer) bei System.Data.OracleClient.OracleColumn.GetValue(NativeBuffer_RowBuffer buffer) bei System.Data.OracleClient.OracleDataReader.GetValue(Int32 i) bei System.Data.OracleClient.OracleDataReader.get_Item(Int32 i) bei NHibernate.Type.DateTimeType.Get(IDataReader rs, Int32 index) bei NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) bei NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) bei NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) bei NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns) bei NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Type instanceClass, EntityKey key, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) bei NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) bei NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) bei NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) bei NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) bei NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) bei NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) 2007-08-16 16:13:24,814 [WARN ] (NHibernate.Util.ADOExceptionReporter): System.ArgumentOutOfRangeException: Die Parameter "Hour", "Minute" und "Second" beschreiben eine nicht darstellbare DateTime. bei System.DateTime.TimeToTicks(Int32 hour, Int32 minute, Int32 second) bei System.Data.OracleClient.OracleDateTime.ToDateTime(Byte[] rawValue) bei System.Data.OracleClient.OracleDateTime.MarshalToDateTime(NativeBuffer buffer, Int32 valueOffset, Int32 lengthOffset, MetaType metaType, OracleConnection connection) bei System.Data.OracleClient.OracleColumn.GetDateTime(NativeBuffer_RowBuffer buffer) bei System.Data.OracleClient.OracleColumn.GetValue(NativeBuffer_RowBuffer buffer) bei System.Data.OracleClient.OracleDataReader.GetValue(Int32 i) bei System.Data.OracleClient.OracleDataReader.get_Item(Int32 i) bei NHibernate.Type.DateTimeType.Get(IDataReader rs, Int32 index) bei NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) bei NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) bei NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) bei NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns) bei NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Type instanceClass, EntityKey key, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) bei NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) bei NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) bei NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) bei NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) bei NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) bei NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
Name and version of the database you are using: Oracle 9.2i
|