Tenho o seguinte código em MYSQL:
mysql>
select i.id, i.estabelecimento_id, e.* from imagem as i join estabelecimento as e on e.id=i.estabelecimento_id where estabelecimento_id = 2;
gostaria de passar ele para HQL. Eu tentei e ficou mais ou menos assim.
DAO
@SuppressWarnings("unchecked")
public List<Imagem> filtrarImagemEstabelecimentoPeloID(Integer estabelecimento_id) {
EntityManager em = new JPAUtil().getEntityManager();
String hql = "select i from Imagem as i where i.estabelecimento.id like :estabelecimento_id";
List<Imagem> resultList = em.createQuery(hql).setParameter("estabelecimento_id", estabelecimento_id).getResultList();
em.close();
return resultList;
}
Classe Imagem
package mz.co.mpteventos.springsecurity.model;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="imagem")
public class Imagem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Lob
@Basic(fetch= FetchType.EAGER)
private byte[] arquivo;
private String nomeArquivo;
@ManyToOne
@JoinColumn(name="evento_id")
private Evento evento;
@ManyToOne
@JoinColumn(name="estabelecimento_id")
private Estabelecimento estabelecimento;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNomeArquivo() {
return nomeArquivo;
}
public void setNomeArquivo(String nomeArquivo) {
this.nomeArquivo = nomeArquivo;
}
public byte[] getArquivo() {
return arquivo;
}
public void setArquivo(byte[] arquivo) {
this.arquivo = arquivo;
}
public Evento getEvento() {
return evento;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public Estabelecimento getEstabelecimento() {
return estabelecimento;
}
public void setEstabelecimento(Estabelecimento estabelecimento) {
this.estabelecimento = estabelecimento;
}
}
Classe estabelecimento
package mz.co.mpteventos.springsecurity.model;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class Estabelecimento {
@Id
@GeneratedValue
private Integer id;
private String nomeEstabelecimento;
private String descricaoEstabelecimento;
@Temporal(TemporalType.TIMESTAMP)
private Calendar dataEhoradeOperacaoInicio = Calendar.getInstance();
@Temporal(TemporalType.TIMESTAMP)
private Calendar dataEhoradeOperacaoFim = Calendar.getInstance();
@OneToOne
private Contacto contacto;
@OneToOne
private Local local;
@ManyToOne
private Conta conta;
@OneToMany
private List<Imagem> imagem;
// getters & setters
public Contacto getContacto() {
return contacto;
}
public void setContacto(Contacto contacto) {
this.contacto = contacto;
}
public Integer getId() {
return id;
}
public String getNomeEstabelecimento() {
return nomeEstabelecimento;
}
public void setNomeEstabelecimento(String nomeEstabelecimento) {
this.nomeEstabelecimento = nomeEstabelecimento;
}
public Local getLocal() {
return local;
}
public void setLocal(Local local) {
this.local = local;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescricaoEstabelecimento() {
return descricaoEstabelecimento;
}
public void setDescricaoEstabelecimento(String descricaoEstabelecimento) {
this.descricaoEstabelecimento = descricaoEstabelecimento;
}
public Calendar getDataEhoradeOperacaoInicio() {
return dataEhoradeOperacaoInicio;
}
public void setDataEhoradeOperacaoInicio(Calendar dataEhoradeOperacaoInicio) {
this.dataEhoradeOperacaoInicio = dataEhoradeOperacaoInicio;
}
public Calendar getDataEhoradeOperacaoFim() {
return dataEhoradeOperacaoFim;
}
public void setDataEhoradeOperacaoFim(Calendar dataEhoradeOperacaoFim) {
this.dataEhoradeOperacaoFim = dataEhoradeOperacaoFim;
}
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
public List<Imagem> getImagem() {
return imagem;
}
public void setImagem(List<Imagem> imagem) {
this.imagem = imagem;
}
}
Ajuda por favor transformar o código MYSQL para HQL