我在这个主题中找到了许多有趣的答案,但没有一个对我来说是正确的。
给定Job.java的一部分
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "company_employee",
joinColumns = @JoinColumn(name = "job_id"),
inverseJoinColumns = @JoinColumn(name = "employee_id"))
private Set<Employee> employees = new HashSet<>();
和Employee.java的一部分
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "company_employee",
joinColumns = @JoinColumn(name = "employee_id"),
inverseJoinColumns = @JoinColumn(name = "job_id"))
private Set<Job> jobs = new HashSet<>();
它怎么对双方都不起作用?
创建对象:
Job job = job.builder().build();
jobRepository.save(job);
Employee employee = Employee.builder().jobs(Sets.newSet(job));
employeeRepository.save(employee);
当我这样做时 - 只有一方保存了 ManyToMany,当测试员工有工作但工作没有任何员工时。Hibernate 不应该处理这个吗?
job.getEmployees = null;
employee.getJobs = { ...job... };
我需要从双方都这样做,所以当首先保存 Employee 时,您可以从 Job 端添加他。MappedBy,Cascade,我想我已经尝试了其中的大部分。另外-我尝试了额外的“添加”方法,但在这种情况下它不起作用,StackOverflowError ...