Насколько я понимаю: проблема в том, что я не могу указать что-то, что я хочу удалить в предложении "where"
.
delete from Commande c where (:art) in elements(c.articles)
Так что здесь я не могу использовать "c"
в предложении"where"
Это то, что я сделал, и это работает очень хорошо:
1) Я выбираю список Commande для удаления
Query querydeleteCmd = em.createQuery("select c from Commande c where (:art) in elements(c.articles)");
querydeleteCmd.setParameter("art", new Article(1));
List<Commande> commandes = querydeleteCmd.getResultList();
2) ЗатемЯ удаляю весь Commande, используя результат первого запроса:
Query queryDeleteCommande = em.createQuery("delete from Commande c where c in (:commandes)");
queryDeleteCommande.setParameter("commandes", commandes);
int countDeletedCommandes= queryDeleteCommande.executeUpdate();
Возможно, есть лучший способ сделать это за один выстрел.