Hibernate Inserindo Registro

Pessoal é o seguinte estou tentando inserir um registro na minha base de dados o problema é que sempre
que tento realizar a inserção o hibernate me lança essa exceção.

8449 [http-8080-1] ERROR org.hibernate.util.JDBCExceptionReporter - ERRO: inserção ou atualização em tabela "resposta" viola restrição de chave estrangeira "fkebb727215e23ed80"
  Detalhe: Chave (idprova)=(2) não está presente na tabela "questao".

Não entendo qual problema poderia ser porque na minha base existe um registro prova com esse id e o relacionamento entre prova e questão é manyTomany e por isso não faz nenhum
sentido que ele esteja cobrando o id de prova dentro de questão.

Mapeamento da minha classe Resposta.

[code]
public class Resposta {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idresposta;

@ManyToOne
@JoinColumn(name="cpfMatricula")
private Aluno aluno;

@ManyToOne
@JoinColumn(name="idProva")
private Prova prova;

@ManyToOne
@JoinColumn(name="idQuestao")
private Questao questao;

@ManyToOne
@JoinColumn(name="idAlternativa")
private Alternativa alternativa;[/code]

Mapeamento da minha classe questão

[code]
@Entity
@Table(name = “questao”)
public class Questao {

@Id
private String idQuestao;

@Column
private String enunciado;

private String enunciadoHTML;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idDisciplina", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
private Disciplina disciplina;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "cpfMatricula", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
private Professor professor;

@ManyToMany
@JoinTable(name="prova_questao",joinColumns={@JoinColumn(name="idQuestao")},
inverseJoinColumns={@JoinColumn(name="idProva")})
private Collection<Prova> provas;

@OneToMany(mappedBy = "questao", cascade = CascadeType.ALL)
private Collection<Alternativa> alternativas;

@OneToMany(mappedBy = "questao")
private Collection<Resposta> respostas;[/code]

Mapeamento da minha classe prova.

@Entity
@Table(name = "prova")
public class Prova {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long idProva;

	private


@ManyToMany
	@JoinTable(name="prova_questao",joinColumns={@JoinColumn(name="idProva")},
	inverseJoinColumns={@JoinColumn(name="idQuestao")})
	private Collection<Questao> questoes;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "identificador", insertable = true, updatable = true)
	@Fetch(FetchMode.JOIN)
	private Instituicao instituicao;	
	
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "turma_prova", joinColumns = { @JoinColumn(name = "idProva") }, 
	inverseJoinColumns = { @JoinColumn(name = "idTurma")})
	private Collection<Turma> listaTurmas;
	
	@OneToMany(mappedBy="prova", cascade=CascadeType.ALL)
	private Collection<Resposta>respostas;
	

Não sei como resolver isso já olhei em alguns outros posts que apresentam o mesmo problema mas as soluções propostas nesses posts não vêm surtindo efeito por isso
peço a ajuda de vcs e agradeço muito se alguém colaborar.