Удалить Cascade не работает, уже пробовал каждое найденное мной решение - PullRequest
0 голосов
/ 07 декабря 2018

Приложение Spring Rest API.Поэтому, когда я удаляю одного пользователя (я хочу также удалить заказы для этого пользователя).Идентификатор пользователя является внешним ключом для заказа (отношение один ко многим).

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id")
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@OneToMany(
        mappedBy = "order_products", 
        cascade = CascadeType.ALL, 
        orphanRemoval = true
    )
private List<OrderHasProduct> orders = new ArrayList<>();

Класс пользователя

@OneToMany(
    mappedBy = "orders", 
    cascade = CascadeType.ALL, 
    orphanRemoval = true
)
private List<OrderHasProduct> orders = new ArrayList<>();

public boolean deleteUser(int id){
    User usr = usrRepository.findById(id);
    if (usr == null) {
        throw new ResourceNotFoundException(User.class.getSimpleName());
    }

    usrRepository.delete(id);
    User deletedUser = usrRepository.findById(id);
    if (deletedUser != null) 
       return false;

    return true;
} 

1 Ответ

0 голосов
/ 07 декабря 2018

Можете ли вы показать класс OrderHasProduct?Вот рабочий пример:

@Entity
public class Post {

    @Id
    @GeneratedValue
    private Long id;

    private String title;

    @OneToMany(
        mappedBy = "post", 
        cascade = CascadeType.ALL, 
        orphanRemoval = true
    )
    private List<PostComment> comments = new ArrayList<>();

    //Constructors, getters and setters
}

@Entity
public class PostComment {

    @Id
    @GeneratedValue
    private Long id;

    private String review;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "post_id")
    private Post post;

    //Constructors, getters and setters

    }
}
...