Problema com excluir objeto do relacionamento n:n

Estou desenvolvendo um sistema Java Web e nele tive um relacionamento n:n entre AgendaTriados e Indicacao gerando assim outra entidade no bando de dados chamada triados_indicacao no qual vai ter o id das tabelas mencionadas anteriormente. Meu problema é que quando tento excluir essa agenda depois de salvar alguns dados com mesmos procedimentos acusa que não pode por está usando o nome dos procedimentos em outra tabela

Class AgendaTriados

@Entity
@Table(name = "agenda_triados")
public class AgendaTriados implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String observacao;
	private Date dataAtendimento;
	private Aluno aluno;
	private Aluno aluno2;
	private Disciplina disciplina;
	private AgendaMarcacao agenda_marcacao;
	private List<Indicacao> indicacoes = new ArrayList<>();

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Column(columnDefinition = "text")
	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	@NotNull
	@Column(name = "data_atendimento")
	@Temporal(TemporalType.DATE)
	public Date getDataAtendimento() {
		return dataAtendimento;
	}

	public void setDataAtendimento(Date dataAtendimento) {
		this.dataAtendimento = dataAtendimento;
	}

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_aluno")
	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_aluno2")
	public Aluno getAluno2() {
		return aluno2;
	}

	public void setAluno2(Aluno aluno2) {
		this.aluno2 = aluno2;
	}

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_disciplina")
	public Disciplina getDisciplina() {
		return disciplina;
	}

	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}


	@NotNull
	@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
	@JoinColumn(name = "id_agenda_marcacao")
	public AgendaMarcacao getAgenda_marcacao() {
		return agenda_marcacao;
	}

	public void setAgenda_marcacao(AgendaMarcacao agenda_marcacao) {
		this.agenda_marcacao = agenda_marcacao;
	}

	@NotNull
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "triado_indicacao", joinColumns = @JoinColumn(name = "agenda_triados_id"),
		inverseJoinColumns = @JoinColumn(name = "indicacao_id"))
	public List<Indicacao> getIndicacoes() {
		return indicacoes;
	}

	public void setIndicacoes(List<Indicacao> indicacoes) {
		this.indicacoes = indicacoes;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		AgendaTriados other = (AgendaTriados) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	public void completarCampo() {
		Disciplina disciplina = new Disciplina();
		AgendaTriados triado = new AgendaTriados();

		triado.setDisciplina(disciplina);

	}

}

Class Indicacao

@Entity
@Table(name = "indicacao")
public class Indicacao implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String nome;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Column(nullable = false)
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Indicacao other = (Indicacao) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return nome;
	}
}

Bean

@Named
@ViewScoped
public class PesquisaAgendaTriadosBean implements Serializable {

	private static final long serialVersionUID = 1L;

	private AgendaTriadosFilter filtro;
	private AgendaTriados triadoSelecionada;
	private List<AgendaTriados> agendaFiltrados;
    @Inject
	private Triados triados;

public void excluir() {
		triados.remover(triadoSelecionada);
		agendaFiltrados.remove(triadoSelecionada);

		FacesUtil.addInfoMessage("Agenda excluída com sucesso.");
	}

//getts e setts
}


Repostory
public class Triados implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private EntityManager manager;

	public AgendaTriados guardar(AgendaTriados triado) {

		return manager.merge(triado);

	}

	@Transactional
	public void remover(AgendaTriados triado) {
		try {
			triado = porId(triado.getId());
			manager.remove(triado);
			manager.flush();
		} catch (PersistenceException e) {
			throw new NegocioException("A agenda não pode ser excluída.");
		}
	}

	public AgendaTriados porId(Long id) {
		return manager.find(AgendaTriados.class, id);
	}

}

A pagina de pesquisa

	<ui:define name="titulo">Clínica Odontologica</ui:define>

	<ui:define name="corpo">
		
		<h:form id="frmPesquisa">
			<h1>Pesquisar Agenda Triados</h1>

			<p:messages autoUpdate="true" closable="true" />

			<p:toolbar style="margin-top: 20px">
				<p:toolbarGroup>
					<p:commandButton value="Pesquisar" update="@form" />
				</p:toolbarGroup>
				<p:toolbarGroup align="right">
					<p:button value="Novo" outcome="/triados/CadastroTriados" />
				</p:toolbarGroup>
			</p:toolbar>

			<p:panelGrid columns="4" id="painel"
				style="width: 100%; margin-top: 20px"
				columnClasses="rotulo, campo, rotulo, campo">

				<p:outputLabel value="Data de Atendimento" />
				<h:panelGroup>
					<p:calendar size="10" pattern="dd/MM/yyyy" readonlyInput="true"
						navigator="false" pages="1" mode="popup" locale="pt"
						value="#{pesquisaAgendaTriadosBean.filtro.dataAtenderDe}" />
	    			a
	    			<p:calendar size="10" pattern="dd/MM/yyyy" readonlyInput="true"
						navigator="false" pages="1" mode="popup" locale="pt"
						value="#{pesquisaAgendaTriadosBean.filtro.dataAtenderAte}" />
				</h:panelGroup>


				<p:outputLabel value="Disciplina" />
				<p:inputText size="20"
					value="#{pesquisaAgendaTriadosBean.filtro.nomeDisc}" />


				<p:outputLabel value="Prática" />
				<p:selectManyCheckbox
					value="#{pesquisaAgendaTriadosBean.filtro.praticas}">
					<f:selectItems value="#{pesquisaAgendaTriadosBean.praticas}"
						var="pratica" itemValue="#{pratica}"
						itemLabel="#{pratica.descricao}" />
				</p:selectManyCheckbox>

				<p:outputLabel value="Turno" />
				<p:selectManyCheckbox
					value="#{pesquisaAgendaTriadosBean.filtro.turnos}">
					<f:selectItems value="#{pesquisaAgendaTriadosBean.turnos}"
						var="turno" itemValue="#{turno}" itemLabel="#{turno.descricao}" />
				</p:selectManyCheckbox>

				<p:outputLabel value="Indicação de Procedimento" />
				<p:selectManyCheckbox
					value="#{pesquisaAgendaTriadosBean.filtro.indicacoes}">
					<f:selectItems value="#{cadastroAgendaTriadosBean.indicacoes}"
						var="indicacao" itemValue="#{indicacao}"
						itemLabel="#{indicacao.nome}" />
				</p:selectManyCheckbox>

				<p:outputLabel value="Código da Disciplina" />
				<p:inputText size="20"
					value="#{pesquisaAgendaTriadosBean.filtro.codigo}" />


			</p:panelGrid>

			<p:dataTable id="triadoTable"
				value="#{pesquisaAgendaTriadosBean.model}" var="triado" lazy="true"
				style="margin-top: 20px" emptyMessage="Nenhuma agenda marcada."
				border="1" cellspacing="0" paginator="true"
				paginatorPosition="bottom" rows="5" rowsPerPageTemplate="5,10,15">

				<p:column headerText="Atendimento"
					style="text-align: center; width: 70px">
					<h:outputText value="#{triado.dataAtendimento}">
						<f:convertDateTime pattern="dd/MM/yyyy" />
					</h:outputText>
				</p:column>
				<p:column headerText="Paciente"
					style="width: 120px; text-align:center">
					<h:outputText
						value="#{triado.agenda_marcacao.lista_espera.paciente.nome}" />
				</p:column>

				<p:column headerText="Procedimentos"
					style="width: 150px; text-align:center">
				  <h:outputText value="#{triado.indicacoes}" />
				</p:column>

				<p:column headerText="Alunos"
					style="text-align: center; width: 200px">
					#{triado.aluno.nome} e #{triado.aluno2.nome} 
				</p:column>
				
				<p:column headerText="Disciplina"
					style="text-align: center; width: 120px">
					<h:outputText value="#{triado.disciplina.nome}" />
				</p:column>

				<p:column headerText="Turno" style="text-align: center; width: 60px">
					<h:outputText value="#{triado.disciplina.turno.descricao}" />
				</p:column>

				<p:column headerText="Prática"
					style="text-align: center; width: 40px">
					<h:outputText value="#{triado.disciplina.pratica.descricao}" />
				</p:column>

				<p:column style="width:60px; text-align: center">
					<p:button outcome="/triados/CadastroTriados" icon="ui-icon-pencil"
						title="Editar" styleClass="botaoPesquisa">
						<f:param name="triado" value="#{triado.id}" />
					</p:button>
					<p:commandButton icon="ui-icon-trash" title="Excluir"
						styleClass="botaoPesquisa" immediate="true"
						oncomplete="PF('confirmacaoExclusao').show()" process="@this"
						update=":frmPesquisa:confirmacaoExclusaoDialog">
						<f:setPropertyActionListener value="#{triado}"
							target="#{pesquisaAgendaTriadosBean.triadoSelecionada}" />
					</p:commandButton>
				</p:column>
			</p:dataTable>

			<p:confirmDialog header="Exclusão da agenda"
				message="Tem certeza que deseja excluir essa agenda?"
				widgetVar="confirmacaoExclusao" id="confirmacaoExclusaoDialog">
				<p:button value="Não" styleClass="botaoPesquisa"
					onclick="PF('confirmacaoExclusao').hide(); return false;" />
				<p:commandButton value="Sim" styleClass="botaoPesquisa"
					oncomplete="PF('confirmacaoExclusao').hide();"
					action="#{pesquisaAgendaTriadosBean.excluir}" process="@this"
					update=":frmPesquisa:triadoTable" />
			</p:confirmDialog>
		</h:form>
	</ui:define>
</ui:composition>