Olá, andei pesquisando sobre union no hibernate e pelo que encontrei isso não é possível, certo?
Meu problema é que preciso unificar esses dois selects em um retorno só, pensei em usar outro método que adiciona uma lista na outra com o addAll(), isso é possível ou é uma gambiarra que me dará dor de cabeça mais para frente?
public List<Atividade> listarAtividadesSeg(String email){
List<Atividade> list = new ArrayList<Atividade>();
list = atividadeDAO.buscarAtividadeByEdicao(email);
list.addAll(atividadeDAO.buscarAtividadesByUnidade(email));
return list;
}
@Override
public List<Atividade> buscarAtividadesByEdicao(String email) {
String hql;
hql =
" SELECT at " +
" FROM " + Atividade.class.getSimpleName()+ " as at"+
" INNER JOIN "+ Edicao.class.getSimpleName()+ " as ed"+
" on at.registroClasse = ed.id"+
" INNER JOIN "+ AcaoSocial.class.getSimpleName() +" as ac " +
"on ed.acaoSocial = ac.id"+
" INNER JOIN "+ Unidade.class.getSimpleName() +" as gr " +
"on ac.unidade = gr.id"+
" where ac.unidade in (Select User.id_unidade from " + UsuarioUnidade.class.getSimpleName() + " as User" +
" where User.email ='"+ email + "')";
return super.listPesq(hql);
}
@Override
public List<Atividade> buscarAtividadesByUnidade (String email) {
String hql;
hql =
" SELECT at " +
" FROM " + Atividade.class.getSimpleName()+ " as at"+
" INNER JOIN "+ Unidade.class.getSimpleName() + " as un"+
" on at.registroClasse = un.id"+
" where un.id in (Select User.id_unidade from " + UsuarioUnidade.class.getSimpleName() + " as User" +
" where User.email ='"+ email + "')";
return super.listPesq(hql);
}
Grato