Witam mam problem z dokładaniem asocjacji mięszy tą samą książką a różnymi osobami:
Tworze osobe z polem Set<Książka> książkas, ustawiam @OneToMany
@Entity
public class Osoba {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@OneToMany(cascade = CascadeType.All)
Set<Ksiazka> ksiazkas;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Set<Ksiazka> getKsiazkas() {
return ksiazkas;
}
public void setKsiazkas(Set<Ksiazka> ksiazkas) {
this.ksiazkas = ksiazkas;
}
}
Tworze książke
@Entity
public class Ksiazka {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
Tworze beana ladującego dane testowe
@Configuration
public class TestData {
@Autowired
OsobaRepository osobaRepository;
@Bean
public void init(){
Ksiazka k1 = new Ksiazka();
Ksiazka k2 = new Ksiazka();
Osoba o1 = new Osoba();
o1.setKsiazkas(new HashSet<>());
o1.getKsiazkas().add(k1);
o1.getKsiazkas().add(k2);
osobaRepository.save(o1); // DOTĄD DZIAŁA
Osoba o2 = new Osoba();
o2.setKsiazkas(new HashSet<>());
o2.getKsiazkas().add(k1);
o2.getKsiazkas().add(k2);
osobaRepository.save(o2);
}
}
Przygotowuje repozytorium
public interface OsobaRepository extends JpaRepository<Osoba, Long> {
}
No i main odpalające springa
@SpringBootApplication
public class Application {
public static void main(String args[]){
SpringApplication.run(Application.class, args);
}
}
działa jeśli jedna książka nie jest powiązana z dwoma osobami. Co powinienem zrobić aby móc dopuścić do wielu powiązań