Cześć,
Mam problem w relacji @ManyToOne. Chciałbym usunąć listę zamówień użytkownika ( użytkownik ma zostać nienaruszony ) z poziomu listy zamówień jednak przy okazji usuwa mi też wszystko inne co połączone jest z użytkownikiem. Bez parametru cascade = CascadeType.ALL / REMOVE w adnotacji usuwanie w ogóle nie działa. Czy da się to jakoś załatwić inaczej niż zapytaniem do bazy @Query ?
listOfFighterHeavyweight oraz listOfFighterLightHeavyweight też przy usuwaniu mają zniknąć - nie chce osieroconych obiektów.
@Entity
@Table(name = "user_orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_order")
private long id;
@ManyToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "fighter_heavyweight_id", referencedColumnName = "id_order")
private List<FighterHeavyweight> listOfFighterHeavyweight = new ArrayList<>();
@ManyToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "fighter_lightheavyweight_id", referencedColumnName = "id_order")
private List<FighterLightHeavyweight> listOfFighterLightHeavyweight = new ArrayList<>();
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY) // ???
@JoinColumn(name = "user_id")
private User user;
public Order() {
}
public void addFighterHeavyweight(FighterHeavyweight fighterHeavyweight) {
this.listOfFighterHeavyweight.add(fighterHeavyweight);
}
public void addFighterLightHeavyweight(FighterLightHeavyweight fighterLightHeavyweight) {
this.listOfFighterLightHeavyweight.add(fighterLightHeavyweight);
}
//gettery settery
}
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_user")
private long id;
@NotEmpty
private String nickname;
@NotEmpty
private String email;
@NotEmpty
private String password;
@OneToOne(fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@JoinColumn(name = "id_details")
private UserDetails userDetails;
@JsonManagedReference
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval = true)
private List<Order> orders = new ArrayList<>();
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
private Set<UserRole> roles = new HashSet<>();
public void addOrder(Order order) {
order.setUser(this);
getOrders().add(order);
}
public User() {
}
//gettery settery
}