[hibernate-dev] Unexpected behavior for @PrePersist/@PreUpdate callback when using EntityManager#merge() on transient object
deepak raut
deepak.raut77 at gmail.com
Tue Aug 19 07:11:00 EDT 2014
Forgot to mention :-
in case of calling persist(), hibernate doesn't invoke callback method with
copy object but the actual object passed to persist(); so for persist() it
works correctly.
On Tue, Aug 19, 2014 at 4:20 PM, deepak raut <deepak.raut77 at gmail.com>
wrote:
> I have an entity class like -
>
> public class Item {
> @Id
> //mapping
> private Long id;
>
> @ElementCollection
> //mapping
> private Set<ItemWrapper> wrapperSet;
>
> @Transient
> private Map<Item, Boolean> itemPredecessor;
>
> ..........
> ..........
>
> @PrePersist
> @PreUpdate
> private void populateSet() {
> wrapperSet.clear();
> for(Map.Entry<Item, Boolean> entry : itemPredecessor.entrySet()) {
> wrapperSet.add(...);
> }
>
> }
> ..............
> }
>
> What happens is when I call entityManager.merge(...) with newly
> instantiated object with itemPredecessor map having some entries in it.
> Hibernate invokes callback method populateSet() with copy of instance
> passed to merge() which doesn't contain itemPredecessor map with respective
> entries as itemPredecessor is marked @Transient. I am using hibernate
> 4.3.5. Is this the right behavior?
>
> --
> Regards,
> Deepak A. Raut
>
--
Regards,
Deepak A. Raut
More information about the hibernate-dev
mailing list