I'm backing out this change, since it caused a regression in a test elsewhere.
The current documented behavior is that a Calendar field will always have set the TimeZone that the field was initialized with. For example, if you have a class that defines:
Calendar myCalendar = Calendar.getInstance(TimeZone.getTimeZone("Europe/Budapest"));
and then you later set the field to a different TimeZone, e.g.:
myCalendar = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
when the instance is persisted and then retrieved, the TimeZone will revert to "Europe/Budapest". Note that this is the only way to maintain consistent behavior so long as we don't actually persist TimeZone data (which we don't).
Also, see section 2.1.1 of the EJB 3.0 Java Persistence API spec, which says: 'Note that an instance of Calendar must be fully initialized for the type that it is mapped to'. That suggests that they expect the TimeZone information in the initialized Calendar to be the one that is used over time.
Please close this issue if you agree with the reversion; otherwise, please put in a comment about why you think the current behavior is incorrect.