Estou com uma duvida com HQL :
modelo:
package br.com.quiz.model;
import java.util.List;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
@Entity
public class Perguntas {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Lob
private String enunciado;
@ElementCollection
private List<Respostas> respostas;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEnunciado() {
return enunciado;
}
public void setEnunciado(String enunciado) {
this.enunciado = enunciado;
}
public List<Respostas> getRespostas() {
return respostas;
}
public void setRespostas(List<Respostas> respostas) {
this.respostas = respostas;
}
@Override
public String toString() {
return "Perguntas [id=" + id + ", enunciado=" + enunciado + "]";
}
}
package br.com.quiz.model;
import javax.persistence.Embeddable;
@Embeddable
public class Respostas {
private String opcao;
private String ehCorreta;
public Respostas() {
}
public Respostas(String opcao, String ehCorreta) {
this.opcao = opcao;
this.ehCorreta = ehCorreta;
}
public String getOpcao() {
return opcao;
}
public void setOpcao(String opcao) {
this.opcao = opcao;
}
public String getEhCorreta() {
return ehCorreta;
}
public void setEhCorreta(String ehCorreta) {
this.ehCorreta = ehCorreta;
}
@Override
public String toString() {
return "Respostas [" + "opcao= " + opcao + "]";
}
}
eu preciso fazer uma query que faça um join entre as entidades: Perguntas join Respostas, mas como optei por usar embaddable não precisei deixar explicito um ID para Respostas.
Nesse caso foi criado uma tabela Perguntas_Respostas que tem como PK a minha id de Perguntas. Como eu posso gerar um HQL e fazer um join por id, se na minha Entidade Respostas eu n tenho uma referencia para chave que foi criada no banco Perguntas_id.
public Perguntas getPergunta(int id) {
String query = "from Perguntas p where p.id = :id";
return manager.createQuery(query, Perguntas.class).setParameter("id", id).getSingleResult();
}
public List<Respostas> getRespostas(int id) {
String query = "FROM Respostas r where r.respostas_id = :id"; // /??????????DUVIDA AQUI????????????
return manager.createQuery(query, Respostas.class).setParameter("id", id).getResultList();
}