Deletar cardápio e todos os produtos que estiverem nele

Tenho uma classe Cardápio, e preciso que ao deleta-lo, todos os itens da classe produto que possuam o id desse cardápio sejam deletados também.

Eu preciso usar o Dao do produto aqui dentro?

Meu Dao:

@RequestScoped
public class CardapioDao {

    private EntityManager manager;

    @Inject
    public CardapioDao (EntityManager manager){
        this.manager = manager; 
    }

    public CardapioDao(){}

    public void remove(Cardapio cardapio) {
        manager.getTransaction().begin();
        cardapio = busca(cardapio);
        manager.remove(cardapio);
        manager.getTransaction().commit();
    }

    public Cardapio busca(Cardapio cardapio) {
        return manager.find(Cardapio.class, cardapio.getId());
    }

Só para entender Cardapio tem vários Produto? Se sim, você pode, simplesmente, mapear para ser delete cascade.

Exato! Mas como eu faço isso?

Usando a propriedade cascade que as anotações @OneToMany e @ManyToMany disponibilizam:

cascade = CascadeType.ALL

Com o type ALL você deixa todas as operações de banco como sendo em cascata.
Mas, existem os tipo “DELETE”, “UPDATE”, etc.

Porém, eu faria diferente. Excluiria todos os produtos com o ID do cardápio e, só então, excluiria o mesmo. Puxaria o controle para mim.

Então, tendo as classes Cardapio e Produto ficariam mais ou menos assim:

Cardapio.class:

@Entity
public class Cardapio {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	private Produto produto;

	@NotNull
	private String nome;

}

Produto.class:

@Entity
public class Produto {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	
	@ManyToOne
	private Cardapio cardapio;
	
	@NotNull
	private String nome;
}

Seria assim?

Modelo do Cardápio:

@Entity
public class Cardapio {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int id;
	
	@OneToMany(cascade = CascadeType.ALL, mappedBy="cardapio")
	private List<Produto> produto;

...
}

Modelo do produto:

@Entity
public class Produto {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	
	@ManyToOne
	@JoinColumn(name="cardapio_id")
	private Cardapio cardapio;

...
}