0

i checked the similar questions before but didn't found an answer for my problem.

Exception:

Error dehydrating property value for webportale_ger_webservice.Model.SPTPL.SUMANZAUFTRAEGE NHibernate.PropertyValueException

But webportale_ger_webservice.Model.SPTPL.SUMANZAUFTRAEGE is only one of the values which are throwing this exception.

StackTrace:

       bei NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Object obj, ISessionImplementor session)
   bei NHibernate.Action.EntityInsertAction.Execute()
   bei NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
   bei NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
   bei NHibernate.Engine.ActionQueue.ExecuteActions()
   bei NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session)
   bei NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
   bei NHibernate.Impl.SessionImpl.Flush()
   bei NHibernate.Transaction.AdoTransaction.Commit()
   bei webportale_ger_webservice.web_api.SP_WRITE_Sperrmuellanmeldung(String vornameStr, String nachnameStr, String strasseStr, String hnrzusatzStr, Int32 hausnrStr, String plzStr, String ortStr, String mailStr, String dateStr, String telStr, String argef, String gef_menge, String bemerkungStr, String arstrasse, String arplz, String annahme_art, String benachrichtigung) in C:\Quellen\VSWebNeoBackEnd\VSWebNeoBackEnd\VSWebNeoBackEnd\project india webservice\webportale_ger_webservice.asmx.cs:Zeile 615.

InnerException:

The index was out of range. It can not be negative and smaller than the listing.
Parameter name: index

StackTrace of InnerException:

  bei System.Collections.ArrayList.get_Item(Int32 index)
   bei Oracle.ManagedDataAccess.Client.OracleParameterCollection.GetParameter(Int32 index)
   bei NHibernate.Type.Int32Type.Set(IDbCommand rs, Object value, Int32 index)
   bei NHibernate.Type.NullableType.NullSafeSet(IDbCommand st, Object value, Int32 index, Boolean[] settable, ISessionImplementor session)
   bei NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id, Object[] fields, Object rowId, Boolean[] includeProperty, Boolean[][] includeColumns, Int32 table, IDbCommand statement, ISessionImplementor session, Int32 index)

My Class and Mapping:

sptpl.cs(clipping):

public class SPTPL
    {
        ...
        public virtual STRASSE STRASSE { get; set; }            
        ...
        public virtual int JAHR { get; set; }
        public virtual int DISPOJAHR { get; set; }
        public virtual int SUMANZAUFTRAEGE { get; set; }    
        public virtual double KARSTRASSE { get; set; }

    }

sptpl.hbm.xml (clipping):

  <class name="SPTPL" table="SPTPL" lazy="false" >

  <many-to-one name="STRASSE">
      <column name="L_ARSTRASSE"  not-null="false" />
    </many-to-one>
...
    <property name="SUMANZAUFTRAEGE">
      <column name="SUMANZAUFTRAEGE"  not-null="false" />
    </property>
    <property name="JAHR">
      <column name="JAHR"  not-null="false" />
    </property>
    <property name="DISPOJAHR">
      <column name="DISPOJAHR"  not-null="false" />
    </property>
    <property name="KARSTRASSE">
      <column name="KARSTRASSE"  not-null="false" />
    </property>

And this is where I use it:

KUNDE kunde = session.Load<KUNDEN>(kundenAr);

STRASSE kunde_strasse = session.Load<STRASSE>(kunde.STRASSE.AR);

    var sperrmuell = new SPTPL { DATUM = datum, OBJEKTE = objekte, KUNDEN = 
                    kunde, ANSPR_EMAIL = kunde.EMAIL1,  KARSTRASSE = kunde_strasse.AR,...
                    ANSPR_NAME2 = nachnameStr, ANSPR_NAME1 = vornameStr, 
                    SUMANZAUFTRAEGE = 1, JAHR = jahr, DISPOJAHR = 0 };

     using (ITransaction transaction = session.BeginTransaction())
      {
                    session.Save(sperrmuell);                

                    transaction.Commit();

  }

These are only clippings, so if you need more Code, tell me. I really don't know what's the problem. Anybody has a clue?

Fehler40
  • 125
  • 1
  • 13

1 Answers1

0

found the answer by searching for the "index out of range" error: https://stackoverflow.com/a/24278610/7177439

i had a doubled column in the mapping file: one many-to-one reference and a property with the same "name" attribute.

Fehler40
  • 125
  • 1
  • 13