Hi Marc, you bring up an interesting topic. For me this is related to a whole bunch of outstanding issues, especially when it comes to a way to optimize how ClassBridges work.
The issues I am referring to are : * https://hibernate.onjira.com/browse/HSEARCH-764 * https://hibernate.onjira.com/browse/HSEARCH-904 * https://hibernate.onjira.com/browse/HSEARCH-436 (no related directly, but falls for me into the same category) We have been for a long time discussing of how we can get the class bridges to report which properties are affected by a particular implementation. Having such a feature would then open up the doors for a more concrete dirty checking when it comes to class bridges. We have been discussing several potential strategies, but I don't think we really we agreed on anything yet. Personally I would like us to find solutions for these issues first. You can then also solve your use case with a custom class or field bridge w/o paying the penalty of that the entity is always treated as dirty. Personally, I would prefer this type of solution over mangling Transient into the picture as well. --Hardy On Jun 22, 2012, at 6:28 PM, Marc Schipperheyn wrote: > @Transient @Field and @ClassBridges mark methods and classes dirty by > default because there is currently no way for HSearch to know which fields > are managed here. In the case of @Transient @Field this will often be ok, > because it will only lead to some superfluous extra indexing which is not a > big hit on performance. However, a ClassBridge will mark all objects of a > certain class as dirty and especially with Lazy connections, this can lead > to a flurry of unnecessary database calls and indexing actions. Also with > @Transient @Field this can occur when underlying Lazy connections are > initialized. > > HSEARCH-1093 talks about a way to improve this by indicating to HSearch > which fields are actually managed by the Field (or ClassBridge) so as to > prevent unnecessary invocations. I'm curious about ideas on this. Could > this be an attribute, such as includePaths that overrides a default > @Field(managedFields={"user.id"}) > @ClassBridge(managedFields={"user.id","description"}) > > or could it be an annotation > @DirtyAware(value={"user.id","description"}) > _______________________________________________ > hibernate-dev mailing list > hibernate-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev