Mapping many-to-many association table with extra column(s)
- by user635524
My database contains 3 tables:
User and Service entities have many-to-many relationship and are joined with the SERVICE_USER table as follows:
USERS - SERVICE_USER - SERVICES
SERVICE_USER table contains additional BLOCKED column.
What is the best way to perform such a mapping?
These are my Entity classes
@Entity
@Table(name = "USERS")
public class User implements java.io.Serializable {
private String userid;
private String email;
@Id
@Column(name = "USERID", unique = true, nullable = false,)
public String getUserid() {
return this.userid;
}
.... some get/set methods
}
@Entity
@Table(name = "SERVICES")
public class CmsService implements java.io.Serializable {
private String serviceCode;
@Id
@Column(name = "SERVICE_CODE", unique = true, nullable = false, length = 100)
public String getServiceCode() {
return this.serviceCode;
}
.... some additional fields and get/set methods
}
I followed this example http://giannigar.wordpress.com/2009/09/04/m ... using-jpa/
Here is some test code:
User user = new User();
user.setEmail("e2");
user.setUserid("ui2");
user.setPassword("p2");
CmsService service= new CmsService("cd2","name2");
List<UserService> userServiceList = new ArrayList<UserService>();
UserService userService = new UserService();
userService.setService(service);
userService.setUser(user);
userService.setBlocked(true);
service.getUserServices().add(userService);
userDAO.save(user);
The problem is that hibernate persists User object and UserService one. No success with the CmsService object
I tried to use EAGER fetch - no progress
Is it possible to achieve the behaviour I'm expecting with the mapping provided above?
Maybe there is some more elegant way of mapping many to many join table with additional column?