<subclass><join> 2009/7/30 Niclas Pehrsson <[email protected]>
> > The only difference between version and my way is that version is not > dependent on the object/row version but if a object is changed and > saved it would't go from version 5 to 6 but it would look what has the > last object changed version and increment it by 1 so it could be from > 5 to 17. > > Yeah its kind of an discrimator that I can sort on when makes my > reqiest, can I have that even if I use joined subclasses? > > On 30 Juli, 14:15, Fabio Maulo <[email protected]> wrote: > > I don't know what you are doing but <property name="Version" > > type="System.Int64" not-null="true" /> > > <property name="OrderPriority" type="System.Int32" > > insert="true" update="true"/> > > sound as > > <version> > > <discriminator> > > > > 2009/7/30 Niclas Pehrsson <[email protected]> > > > > > > > > > > > > > I know it sounds kind of awkward. > > > But I'm want to have a field in the database that's only is used for > > > searching, and when insert I want to be able set that value, the value > > > will tell which type of entity that it represent so I can use an sort > > > on it. Right now I have an interface that tells that this domainobject > > > is synchronizable, (I sync between to databases one way), on the > > > serverside. > > > > > <class name="ISynchronizable" table="SynchronizableItems"> > > > <id name="Id" type="System.Guid"> > > > <generator class="assigned" /> > > > </id> > > > <property name="Version" type="System.Int64" not-null="true" /> > > > <property name="OrderPriority" type="System.Int32" insert="true" > > > update="true"/> > > > <joined-subclass name="Employee">..... > > > <joined-subclass name="Article">.... > > > <joined-subclass name="Organization">.... > > > </class> > > > </hibernate-mapping> > > > > > In the IInterceptor when an transaction starts I found out which is > > > the current highest versionnumber and adds one in the > > > GetNewVersionNumber method > > > > > public override void AfterTransactionBegin(ITransaction tx) > > > { > > > _currentVersionNumber = GetNewVersionNumber(); > > > base.AfterTransactionBegin(tx); > > > } > > > > > Now in OnSave I set the version, but because my other question here on > > >http://groups.google.se/group/nhusers/browse_thread/thread/f7195afd95. > .. > > > when I later retreive the objects they comes unordered so if the > > > entities has dependencies to each other in other words they need to be > > > saved in correct order to not cause a foreignkey exception I need them > > > to come in table order. > > > public override bool OnSave(object entity, object id, object[] > > > state, string[] propertyNames, IType[] types) > > > { > > > if (entity is ISynchronizable) > > > { > > > SetVersion(state, propertyNames, > > > _currentVersionNumber); > > > SetOrderPriority(entity, state, propertyNames); > > > return true; > > > } > > > } > > > private const string OrderPropertyName = "OrderPriority"; > > > private void SetOrderPriority(object entity, object[] objects, > > > string[] strings) > > > { > > > if(entity is Employee) > > > { > > > objects[GetPropertyIndexForPropertyName(strings, > > > OrderPropertyName)] = 1; > > > return; > > > } > > > if (entity is Article) > > > { > > > objects[GetPropertyIndexForPropertyName(strings, > > > OrderPropertyName)] = 2; > > > return; > > > } > > > if (entity is Organization) > > > { > > > objects[GetPropertyIndexForPropertyName(strings, > > > OrderPropertyName)] = 3; > > > return; > > > } > > > } > > > > > Now when having that said, I really do not need the OrderPriority > > > property in my domainmodel, only need to set it in the interceptor :) > > > but with your earlier answer I guess its not possible. > > > I guess it would be nice to have it if I would have an extra field > > > that tells me who have made the change but I only want it persisted in > > > the db and not it my model. > > > > > On 29 Juli, 23:34, Fabio Maulo <[email protected]> wrote: > > > > Interesting concept.An insertable/*updatable* property but not in the > > > model, > > > > very interesting. > > > > Which is the name of the pattern ? > > > > > > 2009/7/29 Niclas Pehrsson <[email protected]> > > > > > > > is there any alternative what Im is out for, > > > > > > > use the field as select/insert/update but not in the model? > > > > > So I just can access i from IInterceptor :). > > > > > > > On Jul 29, 8:42 pm, Fabio Maulo <[email protected]> wrote: > > > > > > access="none" mean that the property does not involved in insert > nor > > > > > update > > > > > > but only in where clauses of queries. > > > > > > > > 2009/7/29 Niclas Pehrsson <[email protected]> > > > > > > > > > I I have tested to inherit EmptyInterceptor and registered it > with > > > the > > > > > > > sessionfactory. > > > > > > > In OnSave I want to add value to an property that has > access="none" > > > > > > > but I can set the values in OnSave... > > > > > > > > > states[GetIndexForProperty("MyAccessNonePropertyName")] = > false; > > > > > > > > > <property name="MyAccessNonePropertyName" type="System.Boolean" > > > > > > > access="none"/> > > > > > > > > > But it keeps getting the value null when inserting or updating, > it > > > > > > > works fine if I have something else on access. Am I doing > something > > > > > > > wrong? > > > > > > > > -- > > > > > > Fabio Maulo > > > > > > -- > > > > Fabio Maulo > > > > -- > > Fabio Maulo > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
