Static update strings appear to cover only the following situations:
1) there are no uninitialized properties (so all updateable attributes
should be updated);
2) all lazy properties are uninitialized (so only
non-lazy, updateable attributes should be updated).

As of 5.1, we have "lazy groups". It is possible some lazy groups are
initialized, and some are uninitialized. We have a couple of alternatives
for dealing with the various combinations:

For example, if there are are 3 lazy groups: lazyGroup1, lazyGroup2,
lazyGroup3.

1) Generate SQL update strings for all possible combinations of initialized
lazy groups:

SQL update strings are already generated for the following combinations:

* lazyGroup1: uninitialized;  lazyGroup2: uninitialized; lazyGroup3:
uninitialized
* lazyGroup1: initialized;  lazyGroup2: initialized; lazyGroup3:
initialized

SQL update strings for the following combinations need to be generated to
fix the bug:

* lazyGroup1: initialized;  lazyGroup2: uninitialized; lazyGroup3:
uninitialized
* lazyGroup1: uninitialized;  lazyGroup2: initialized; lazyGroup3:
uninitialized
* lazyGroup1: uninitialized;  lazyGroup2: uninitialized; lazyGroup3:
initialized
* lazyGroup1: initialized;  lazyGroup2: initialized; lazyGroup3:
uninitialized
* lazyGroup1: initialized;  lazyGroup2: uninitialized; lazyGroup3:
initialized
* lazyGroup1: uninitialized;  lazyGroup2: initialized; lazyGroup3:
initialized

The update strings could be stored in a Map with key containing the names
(or indexes?) of the corresponding initialized lazy groups.

2) Generate dynamic update strings when there is at least 1 uninitialized
group, or when there are more than N lazy groups. What should N be?

Comments or suggestions?

A related bug is that calling a setter on a lazy property only initializes
that one lazy property. It should also initialize other properties in the
same lazy group. This one is pretty easy to fix.
Thanks,
Gail
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to