I'm with John on this one, you should: 1-remove all the strident thing in you custom id generator 2-use your id generator as default for every mapping (you can override the “native generator class" in a custom dialect and use native on every mapping) 3-for the table/class that uses strident, set assigned instead of native, and do the logic in the entity class.
2011/2/26, [email protected] <[email protected]>: > As far as i understood all this, i have to use native, if i want to provide > my own ID generation. And i need this because the DB uses a TBL_IDEN for > ID's. > And in case of the PInfo Class there is no TBL_IDEN entry because the ID > results from the StrIdent. So, since all the NH ID generators will not work, > i have to use my own. > > > Am schrieb John Davidson <[email protected]>: >> Why do you need that override if you want to use native. If you are using >> >> native, then there should be no override that sets the id value anywhere >> in your code. > >> John Davidson > > >> On Sat, Feb 26, 2011 at 12:27 PM, [email protected]> wrote: > >> I don't really want to manage the ID value in code. That's why i use the >> IdentifierGenerator with the >> overridden Generate method. So the ID is assigned from NH. I never touch >> the ID in my code. > >> Am schrieb John Davidson [email protected]>: > > >> > If you are managing the Id value in your code you should use a >> generator of "assigned" rather than "native". >> > >> > John Davidson >> > >> > On Sat, Feb 26, 2011 at 10:56 AM, [email protected]> wrote: > >> > >> > It would be very nice, if someone could take a quick look at the >> described problem. Maybe i do something totally wrong, but i'm >> > >> > runing a little out of time and don't know what to do. Thanks > >> > >> > >> > Am schrieb [email protected]: >> > >> > >> > > I have to correct the code form the last post it: > >> > > >> > > public override object Generate(ISessionImplementor session, object >> obj) >> > > { >> > > if( obj is Domain.Base.PInfo ) >> > >> > > { >> > > int nID = 0; > >> > > if( int.TryParse((obj as Domain.Base.PInfo).StrIdent,out nID) ) >> > > { >> > > return nID; >> > > } >> > > return null; >> > >> > > } > >> > > return base.Generate(session,obj); >> > > } >> > > >> > > So i thought i give back the ID for the new entity. Not right? >> > > Ther inheritance from TableGenerator is because the DB has a TBL_IDEN >> > > >> Table, so i do this in > >> > >> > > the Configure method: >> > > >> > >> > > public override void Configure(IType type, IDictionary parms, Dialect >> > > >> dialect) >> > > { >> > > string strTable = parms["target_table"]; > >> > >> > > string strColumn = parms["target_column"]; >> > > >> > > parms["table"] = "TBL_IDEN"; >> > > parms["column"] = "IDEN_CNT"; > >> > >> > > parms["where"] = "((IDEN_TABLE = '" + strTable + "') AND (IDEN_COL >> = '" + strColumn + "'))"; >> > > base.Configure(type, parms, dialect); > >> > >> > > } >> > > >> > > As for the mapping, the ID is mapped as "native" and StrIdent is a >> simple string property: >> > > >> > > >> > > >> > > > >> > > >> > > >> > >> > >> > >> > > ... >> > > >> > > So, i hope this is enough information and anyone has a hint for me. >> > > >> > > Thanks >> > > > >> > > Am schrieb [email protected]: >> > >> > > > I know and i don't do that :-) >> > > > What I do is, i use an own IdentifierGenerator inherited from >> TableGenerator. There i have to check the following: > >> > > > >> > > > public override object Generate(ISessionImplementor session, object >> > > > >> obj) >> > >> > > > { >> > > > if( obj is Thp5.Domain.Base.Patient.PatientInfo ) > >> > > > { >> > > > int nID = 0; >> > > > if( int.TryParse((obj as Domain.Base.PInfo).StrIdent,out nID) ) >> > >> > > > { >> > > > return nID; > >> > > > } >> > > > return null; >> > > > } >> > > > return base.Generate(session,obj); >> > > > >> > > > This is because the ID is calculated from the string ID (don't ask >> about it..it has to be this way) > >> > >> > > > >> > > > Is this the wrong way? >> > > > >> > > > Am schrieb "José F. Romaniello" [email protected]>: > >> > > > > you should not modify the POIDs of your entities instances >> > >> > > > > >> > > > > 2011/2/25 [email protected]> > >> > > > > >> > > > > Hi all, >> > >> > > > > >> > > > > i get the following exception and don't know exactly what i >> should do about it: >> > > > > >> > > > > "identifier of an instance of Domain.Base.PInfo was altered from >> 102472 to 102472" > >> > >> > > > > >> > > > > >> > > > > Any hint? >> > > > > >> > > > > Thanks >> > > > > >> > > > > >> > > > > >> > > > > > >> > > > > -- >> > > > > >> > >> > > > > You received this message because you are subscribed to the >> Google Groups "nhusers" group. >> > > > > >> > > > > To post to this group, send email to [email protected]. > >> > >> > > > > >> > > > > To unsubscribe from this group, send email to >> [email protected]. >> > > > > > >> > > > > >> > >> > > > > For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > > > > >> > > > > >> > > > > >> > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > > >> > > > > -- >> > > > > >> > > > > You received this message because you are subscribed to the >> Google Groups "nhusers" group. >> > >> > > > > >> > > > > To post to this group, send email to [email protected]. > >> > > > > >> > > > > To unsubscribe from this group, send email to >> [email protected]. >> > >> > > > > > >> > > > > >> > > > > For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > > > > >> > >> > >> > >> > >> > -- >> > >> > You received this message because you are subscribed to the Google >> Groups "nhusers" group. >> > >> > To post to this group, send email to [email protected]. > >> > >> > To unsubscribe from this group, send email to >> [email protected]. >> > >> > >> > For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > -- >> > >> > You received this message because you are subscribed to the Google >> Groups "nhusers" group. > >> > >> > To post to this group, send email to [email protected]. >> > >> > To unsubscribe from this group, send email to >> [email protected]. > >> > >> > >> > For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> > > > > > >> -- > >> You received this message because you are subscribed to the Google >> Groups "nhusers" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to >> [email protected]. > > >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. > > > > > > > > > > > > > >> -- > >> You received this message because you are subscribed to the Google >> Groups "nhusers" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to >> [email protected]. > > >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > > -- Enviado desde mi dispositivo móvil -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
