Tenho duas entidades em que estão relacionadas:
Natureza -> Assunto
Sendo que Natureza pode ter vários Assuntos. Relação de 1-N.
Em Natureza tenho uma coleção de Assuntos, seguindo da seguinte forma:
@OneToMany(mappedBy = "naturezaAuditoria")
@JoinColumn(name = "ASS_NAD_ID")
private List<Assunto> assunto;
Em Assunto tenho um atributo que é uma Natureza, seguindo da seguinte forma:
@JoinColumn(name = "ASS_NAD_ID")
@ManyToOne(targetEntity=Assunto.class)
private NaturezaAuditoria naturezaAuditoria;
Sendo que, Natureza é uma view e Assunto é uma tabela normal. Estou conseguindo persistir assunto normalmente, fazendo o relacionamento com Natureza, mas quando tenho obter um assunto ou uma lista de assuntos passando Natureza como referência ou mesmo um nome de um assunto, ele acha que estou procurando Assunto com natureza da ID da Natureza. Isso é completamente bizzaro:
...
@NamedQuery(name = "Assunto.findByNomeAndNatureza",
query = "SELECT m FROM Assunto m WHERE m.nome like '%'||:nome||'%' AND m.naturezaAuditoria = :naturezaAuditoria"),
@NamedQuery(name = "Assunto.findByNatureza",
query = "SELECT m FROM Assunto m WHERE m.naturezaAuditoria = :naturezaAuditoria")
...
Usando essas duas NamedQueries. ou seja, tenho duas queries:
“SELECT m FROM Assunto m WHERE m.nome like ‘%’||:nome||’%’ AND m.naturezaAuditoria = :naturezaAuditoria”
e
“SELECT m FROM Assunto m WHERE m.naturezaAuditoria = :naturezaAuditoria”
O erro que ele me retorna é justamente essa stack abaixo:
javax.persistence.EntityNotFoundException: Unable to find br.meupacote.dados.Assunto with id 76
Sendo que ele relacionou o ID 76 como sendo o ID de Assunto, mas na verdade esse ID é da Natureza, por que ele não está conseguindo relacionar da forma correta?
Obrigado turma.
