Imagine aşağıdaki modeller:Spring JPA'da var olan varlığa işaret eden yeni bir varlık nasıl kaydedilir?
Çalışan:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "employee_project", joinColumns = @JoinColumn(name = "Emp_Id"), inverseJoinColumns = @JoinColumn(name = "Proj_id"))
private Set<Project> projects = new HashSet<Project>();
Proje: Şimdi
@ManyToMany(mappedBy = "projects")
private Set<Employee> employees = new HashSet<Employee>();
Ben varolan projeye başvuruda bulunan yeni bir çalışan oluşturun ve bu çalışanın devam denerseniz, ben Bir hata iletisi:
detached entity passed to persist: Project
public void createNewEmployee(EmployeeDTO empDTO) {
Employee emp = new Employee();
// add stuff from DTO, including projects
repository.saveAndFlush(emp); // FAILS
}
ve böyle mevcut olanları güncellemek: yee şöyle
public void updateEmployee(EmployeeDTO empDTO) {
Employee emp = repository.findOne(empDTO.getId());
// set stuff from DTO, including projects
repository.saveAndFlush(emp); // WORKS!
}
Teşekkürler, bu işe yarıyor, ancak güncelleme yöntemimin neden depolarından projeleri almadan çalıştığını hala bilmek isterim (ayrıntılar için güncellenmiş soruma bakın) – wannabeartist
Buradaki soruları geçersiz kılmak için iyi bir fikir değil. bir dereceye kadar cevap ver. Yeni sorular sorsan iyi olur. Cevabımı buna göre güncelleyeceğim. –
Bu yayın '@ Transactional' veya JPA'lar mı, yoksa önemli mi? – CorayThan