Hi folks, I've a long time since I've been posted about Java EE.
So, today we gonna talking about JPA, we are talking about the merge operation.
From Specs:
The semantics of the merge operation applied to an entity X are as follows:
....
- If X is a managed entity, it is ignored by the merge operation, however, the merge operation is cascaded to entities referenced by relationships from X if these relationships have been annotated with the cascade element value cascade=MERGE or cascade=ALL annotation.
This is what I need to talk with you about:
Here' an example:
Consider we have a uni-directional many-to-one relationship between Jobs and the user that do that job:
public class User{
// .. user data here...
}
public class Job{
private User user;
//....
public User getUser(){
return user;
}
}
as it appears, It is a uni-directional from Job to User (many-to-one)
suppose we have the following annotation over the getUser operation:
@ManyToOne(cascade=CascadeType.MERGE)
this means, when a managed Job have changed its User, on merging the Job Object to DB, also merge the in-relation Object (User).
Here's a code example that prove this specs element:
Job job = em.find(Job.class, 1);
User u = job.getUser();
u.setName("mohammed");
em.merge(job);
After this code, the field name of User will be updated to be "mohammed".
No comments:
Post a Comment