У меня есть два класса, таблицы которых имеют двунаправленную связь друг с другом. Сотрудник может быть связан с несколькими категориями услуг и наоборот. Таблица соединений объявляется в классе Категории сервисов.Весна Многие из многих двунаправленных данных сохранения
Когда я хочу, чтобы сохранить объект Employee, то ничего не будет сохранен в соединительной таблице, но если я пытаюсь напечатать связанные сотрудников категории услуг, то я получаю все детали
if(employee.getServiceCategories()!= null && employee.getServiceCategories().size()>0){
for(ServiceCategory serviceCategory : employee.getServiceCategories()){
logger.debug("employee's serviceCategory id : " + serviceCategory.getId());
logger.debug("employee's ServiceCat Name : " + serviceCategory.getServiceCatName());
}
}
Сотрудник .java
@Entity
@Table(name = "employee")
public class Employee extends BaseEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(mappedBy="employees")
private List<ServiceCategory> serviceCategories = new ArrayList<>();
}
ServiceCategory.java
@Entity
@Table(name = "servicecategory")
public class ServiceCategory extends BaseEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(targetEntity = Employee.class, cascade = { CascadeType.ALL })
@JoinTable(name = "servicecategory_employee", joinColumns = { @JoinColumn(name = "servicecatid") }, inverseJoinColumns = { @JoinColumn(name = "empid") })
private List<Employee> employees = new ArrayList<>();
}
Спасибо за вашу помощь.
UPDATE
Я изменил код в Employee.java к
@ManyToMany(mappedBy="employees", cascade = CascadeType.ALL)
private List<ServiceCategory> serviceCategories = new ArrayList<>();
Также я сейчас, используя следующий код при сохранении Служащий в моей DAO класса `
public void addEmployee(Employee employee) throws SmrException {
Session session = this.sessionFactory.getCurrentSession();
session.merge(employee);
logger.info("Employee saved successfully, employee Details="
+ employee);
}
Но результат остается таким же. Я не могу сохранить данные в таблице соединений
Вам нужно иметь '@ManyToMany (cascade = CascadeType.ALL)' в поле 'serviceCategories' в классе' Employee'. – manish
@manish Пожалуйста, посмотрите на обновление и предложите. Еще раз спасибо –