I hope someone can help me with this. I put up with my brain and my project should be very soon. Thank you in advance.
I get an exception from a range out of range when I insert a new record. After an endless search for information, it was suggested that the number of column values in my mapping does not match the number of values in my constant class. However, I counted and counted, and they seem to be a coincidence. As you can see from my code below, I am using NHibernate.Mapping.Attributes to do my mapping. Maybe I'm doing something wrong.
I finally downloaded the NHibernate source and debugged my problem. The following is the insert statement that NHibernate is trying to build:
{INSERT INTO WTSLIB33T.PRODDATA (PSTAT, PCONO, PDVNO, PWKTY, PCRTY, PTSID, PCNNO, PDTTK, PJBNO, PSJNO, PTKNO, PCWNO, PWKAR, PWKDC, PWKCD, PCNWO, PDNC, PDNC, PDNC, PDNC, PDNC, PDNC, PDNC, PDNC , PCUST) VALUES (α, α, α, α, α, α, α, α, α, α, α, α, p>
As you can see, the number of parameters corresponds to the number of fields in the list. I also matched this generated insert with my class and I found that the PSEQ and PCUST columns are out of order with my constant class. Then, when debugging through dehydration, I found two possible problems. First, I noticed that calling the NullSafeSet function sets parameter 0 so that my PSEQ field must be set, but parameter 0 in the insert PSTAT statement.
The second problem that I noticed is that the very last call to "index + = ArrayHelper.CountTrue (includeColumns [i]);" in the dehydrate function leaves the index variable at 23, which is correct; however, the next call, "IdentifierType.NullSafeSet (operator, identifier, index, session);" where it checks the row identifier, passes at index 23, which will be out of reach. This value should be 22 for a zero-based array.
protected int Dehydrate(object id, object[] fields, object rowId, bool[] includeProperty, bool[][] includeColumns, int table, IDbCommand statement, ISessionImplementor session, int index) { if (log.IsDebugEnabled) { log.Debug("Dehydrating entity: " + MessageHelper.InfoString(this, id, Factory)); }
}
MY RESISTANT CLASS:
[NHibernate.Mapping.Attributes.Class (0, schema = WTSLIB33T, table = "PRODDATA", NameType = typeof (ProddataDAO), Lazy = true)] Public class ProddataDAO: Object //: INotifyPropertyChanged {public ProddataDAO () {}
public ProddataDAO(string PSTAT, decimal PCONO, decimal PDVNO, decimal PSEQ, string PWKTY, string PCRTY, decimal PTSID, decimal PCUST, decimal PCNNO, decimal PDTTK, string PJBNO, string PSJNO, decimal PTKNO, string PCWNO, string PWKAR, string PWKDC, string PWKCD, string PCNWO, decimal PWDNO, string PDESC, decimal PDCCD, decimal PHRS, decimal PUNIT) { _PSTAT = PSTAT; _PCONO = PCONO; _PDVNO = PDVNO; _PSEQ = PSEQ; _PWKTY = PWKTY; _PCRTY = PCRTY; _PTSID = PTSID; _PCUST = PCUST; _PCNNO = PCNNO; _PDTTK = PDTTK; _PJBNO = PJBNO; _PSJNO = PSJNO; _PTKNO = PTKNO; _PCWNO = PCWNO; _PWKAR = PWKAR; _PWKDC = PWKDC; _PWKCD = PWKCD; _PCNWO = PCNWO; _PWDNO = PWDNO; _PDESC = PDESC; _PDCCD = PDCCD; _PHRS = PHRS; _PUNIT = PUNIT; } //public event PropertyChangedEventHandler PropertyChanged; private decimal _PSEQ; //[NHibernate.Mapping.Attributes.Id(0, Name="PSEQ", Column="PSEQ", Type="Decimal")] [NHibernate.Mapping.Attributes.CompositeId(1, UnsavedValue=NHibernate.Mapping.Attributes.UnsavedValueType.Undefined)] [NHibernate.Mapping.Attributes.KeyProperty(2, Name = "PSEQ", Column = "PSEQ", Type="Decimal")] [NHibernate.Mapping.Attributes.KeyProperty(2, Name = "PCUST", Column = "PCUST")] //[NHibernate.Mapping.Attributes.Generator(3, Class="none")] [NHibernate.Mapping.Attributes.Property(4, Name="PSEQ", Column="PSEQ")] public virtual decimal PSEQ { get { return _PSEQ; } set { if (value != this._PSEQ) { _PSEQ = value; //OnPropertyChanged("PSEQ"); } } } private decimal _PCUST; //[NHibernate.Mapping.Attributes.Id(0, Column = "PCUST", Type = "Decimal")] [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PCUST { get { return _PCUST; } set { if (value != this._PCUST) { _PCUST = value; //OnPropertyChanged("PCUST"); } } } private string _PSTAT; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PSTAT { get { return _PSTAT; } set { if (value != this._PSTAT) { this._PSTAT = value; //OnPropertyChanged("PSTAT"); } } } private decimal _PCONO; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PCONO { get { return _PCONO; } set { if (value != this._PCONO) { _PCONO = value; //OnPropertyChanged("PCONO"); } } } private decimal _PDVNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PDVNO { get { return _PDVNO; } set { if (value != this._PDVNO) { _PDVNO = value; //OnPropertyChanged("PDVNO"); } } } private string _PWKTY; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PWKTY { get { return _PWKTY; } set { if (value != this._PWKTY) { _PWKTY = value; //OnPropertyChanged("PWKTY"); } } } private string _PCRTY; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PCRTY { get { return _PCRTY; } set { if (value != this._PCRTY) { _PCRTY = value; //OnPropertyChanged("PCRTY"); } } } private decimal _PTSID; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PTSID { get { return _PTSID; } set { if (value != this._PTSID) { _PTSID = value; //OnPropertyChanged("PTSID"); } } } private decimal _PCNNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PCNNO { get { return _PCNNO; } set { if (value != this._PCNNO) { _PCNNO = value; //OnPropertyChanged("PCNNO"); } } } private decimal _PDTTK; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PDTTK { get { return _PDTTK; } set { if (value != this._PDTTK) { _PDTTK = value; //OnPropertyChanged("PDTTK"); } } } private string _PJBNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PJBNO { get { return _PJBNO; } set { if (value != this._PJBNO) { _PJBNO = value; //OnPropertyChanged("PJBNO"); } } } private string _PSJNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PSJNO { get { return _PSJNO; } set { if (value != this._PSJNO) { _PSJNO = value; //OnPropertyChanged("PSJNO"); } } } private decimal _PTKNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PTKNO { get { return _PTKNO; } set { if (value != this._PTKNO) { _PTKNO = value; //OnPropertyChanged("PTKNO"); } } } private string _PCWNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PCWNO { get { return _PCWNO; } set { if (value != this._PCWNO) { _PCWNO = value; //OnPropertyChanged("PCWNO"); } } } private string _PWKAR; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PWKAR { get { return _PWKAR; } set { if (value != this._PWKAR) { _PWKAR = value; //OnPropertyChanged("PWKAR"); } } } private string _PWKDC; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PWKDC { get { return _PWKDC; } set { if (value != this._PWKDC) { _PWKDC = value; //OnPropertyChanged("PWKDC"); } } } private string _PWKCD; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PWKCD { get { return _PWKCD; } set { if (value != this._PWKCD) { _PWKCD = value; //OnPropertyChanged("PWKCD"); } } } private string _PCNWO; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PCNWO { get { return _PCNWO; } set { if (value != this._PCNWO) { _PCNWO = value; //OnPropertyChanged("PCNWO"); } } } private decimal _PWDNO; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PWDNO { get { return _PWDNO; } set { if (value != this._PWDNO) { _PWDNO = value; //OnPropertyChanged("PWDNO"); } } } private string _PDESC; [NHibernate.Mapping.Attributes.Property(4)] public virtual string PDESC { get { return _PDESC; } set { if (value != this._PDESC) { _PDESC = value; //OnPropertyChanged("PDESC"); } } } private decimal _PDCCD; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PDCCD { get { return _PDCCD; } set { if (value != this._PDCCD) { _PDCCD = value; //OnPropertyChanged("PDCCD"); } } } private decimal _PHRS; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PHRS { get { return _PHRS; } set { if (value != this._PHRS) { _PHRS = value; //OnPropertyChanged("PHRS"); } } } private decimal _PUNIT; [NHibernate.Mapping.Attributes.Property(4)] public virtual decimal PUNIT { get { return _PUNIT; } set { if (value != this._PUNIT) { _PUNIT = value; //OnPropertyChanged("PUNIT"); } } } public override bool Equals(object obj) { if (obj == null) return false; ProddataDAO p = obj as ProddataDAO; if (this.PCONO == p.PCONO && this.PDVNO == p.PDVNO && this.PCUST == p.PCUST && this.PSEQ == p.PSEQ) return true; else return false; } public override int GetHashCode() { int hash = 1122; hash += (null == this.PCONO ? 0 : this.PCONO.GetHashCode()); hash += (null == this.PDVNO ? 0 : this.PDVNO.GetHashCode()); hash += (null == this.PCUST ? 0 : this.PCUST.GetHashCode()); hash += (null == this.PSEQ ? 0 : this.PSEQ.GetHashCode()); return hash; }