Моя база данных содержит 3 таблицы: Пользовательские и служебные объекты имеют отношение "многие ко многим" и соединены с таблицей SERVICE_USER следующим образом:
ПОЛЬЗОВАТЕЛИ - SERVICE_USER - УСЛУГИ
В таблице SERVICE_USER содержится дополнительный столбец BLOCKED.
Каков наилучший способ выполнения такого сопоставления? Это мои классы Entity
@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
}
Я последовал этому примеру http://giannigar.wordpress.com/2009/09/04/m... using-jpa/ Вот несколько тестовых кодов:
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);
Проблема заключается в том, что hibernate сохраняет объект User и UserService one. Нет успеха с объектом CmsService
Я попытался использовать EAGER fetch - нет прогресса
Возможно ли достичь такого поведения, которое я ожидаю, с приведенным выше отображением?
Может быть, есть еще более элегантный способ сопоставления многих из многих таблиц соединений с дополнительным столбцом?