I’m curious and need to find this answer quick. Google won’t help much.
The Java Persistence API has these properties that tell the framework to cascade operations on associated entities:
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
I know what the first two mean: when I persist object A which has B, persist B as well, and when I delete A, delete B as well.
But I can’t make any sense of what the other two accomplish. Help?
REFRESH means “pull any state changes from the database into my representation”. Cascading this is simple; it means that all associated entities are refreshed.
MERGE means something complex that approximates “save” but is more like “push this detached entity back into managed status and save its state changes”; the cascading means that all associated entities get pushed back the same way, and the managed-entity handle you get back from
.merge()has all managed entities associated with it.Link to one instance of the relevant docs