Например, код реализации дополнительного класса должен выглядеть так:
аза данных содержит 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. Нет успеха с объектом CmsService
Я пытался использовать EAGER fetch - нет прогресса
Можно ли добиться ожидаемого поведения с помощью приведенного выше сопоставления?
Может быть, есть какой-то более элегантный способ сопоставления многих со многими таблицами соединений с дополнительным столбцом?