Estou com problemas em criar uma Criteria, pois o relacionamento é grande.
Segue abaixo o Diagrama para entender melhor o relacionamento :
Vou tentar explicar, para Cadastrar um Agendamento de Consulta, eu preciso tem primeiro o Tipo de Local de Atendimento cadastrado, entao um
Local de Atendimento cadastrado usando esse tipo.
Assim como preciso de um Procedimento_Exame cadastrado para depois em ExameLocal fazer o relacionamento entre os dois.
Ae sim com o Tipo de Agenda cadastrado eu vou em cadastrar Agenda.
Segue um exemplo;
Tipo de Local de Atendimento : Hospital
Local de Atendimento : Os dados do Local em Si associado ao tipo (no caso Hospital)
Procedimento Exame: Os procedimentos que são realizados em um Local de Atendimento (Ex. todo o Codigo CID10)
Exame Local: É o tipo de exame que um local presta, por exemplo um Hospital faz X procedimento exame
Tipo de Agenda: seria o tipo dela, (Ex. Consulta, Odontologico, Ginecologista)
A duvida é a seguinte.
Na minha JSP eu seleciono:
Tipo da Agenda
Cliente
Funcionario
Profissional de Saude
Procedimento ou Exame (Aqui que está o problema)
Local de Atendimento
Outros Dados…
Eu gostaria de que ao selecionar em meu rich:comboBox o Procedimento_Exame ele me lista-se apenas os
Locais que fizessem aquele procedimento.
Ai que entra a duvida, com SQL eu consigo fazer só que gostaria de fazer com o Criteria.
Alguem se habilita a ajudar ??
Desde já agradeço.
Se puder explicar com detalhes eu ficaria mais agradecido ainda.
Com criteria tb é possivel fazer, mas por ser uma consulta longa onde vc teria q crias aliases para os relacionamentos, e por vc já ter familiaridade com sql, aconselho vc a usar o HQL, q é bem proximo do sql e provavelmente vc não tera dificuldades em fazer a consulta.
thiagocg
Obrigado por ajudar.
Voce teria como citar um exemplo, exemplificando os comandos?
Link da pagina da documentação do projeto:
http://www.hibernate.org/hib_docs/v3/reference/en-US/html/
ai vc busca a parte de hql, tem bastante coisa ai!
ja add aos favoritos a pag. pq vc vai usar bastante se decidir trabalhar com o hibernate!
Abraço
thiago
Mexendo eu fiz umas modificações, e agora a pagina chega a ser publicada, mais gera um erro que não encontro o motivo.
E também não popula o combo.
ficou assim o metodo no bean:
@SuppressWarnings("unchecked")
public List<SelectItem> getexameLocal() {
List<SelectItem> lista = new ArrayList<SelectItem>();
LocalAtendimentoHandler localAtendimentos = new LocalAtendimentoHandler();
System.out
.println("Pegando as dependendias entre Local Atendimento -> Exame...");
System.out.println("Local de Atendimento Selecionado "
+ this.localAtendimentoSelecionado);
Session session = HibernateUtil.currentSession();
System.out.println(">> AQUI 1");
try {
System.out.println(">>> Entrei Try");
Query hql = session
.createQuery(
"LocalAtendimento.id_locatend, LocalAtendimento.nomfant_locatend from ExameLocal"
+ "inner join LocalAtendimento on ExameLocal.id_locatend = LocalAtendimento.id_locatend"
+ "where ExameLocal.id_procex = :procedimento")
.setString("procedimento", procedimentoExameSelecionado);
System.out.println(">>> Return do Try");
localAtendimentos = (LocalAtendimentoHandler) hql.list();
} catch (Exception e) {
System.out.println(">>> Entrei Catch");
System.out.println(">>> ERRO " + e.getMessage());
System.out.println(">>> Return do Catch");
}
for (LocalAtendimento localAtendimento : localAtendimentos.getLocalAtendimentos()) {
lista.add(new SelectItem(localAtendimento.getNomeFantasia(),
localAtendimento.getId().toString()));
}
return lista;
}
E Assim no JSP:
<tr>
<td><h:outputText value="Local de Atendimento" /></td>
<td><rich:comboBox id="localAtendimentoExameParaComboBox"
defaultLabel="-Selecione o Local de Atendimento-" enableManualInput="false"
width="200px;" value="#{agendarHandler.localAtendimentoSelecionado}">
<f:selectItems value="#{agendarHandler.exameLocal}" />
</rich:comboBox></td>
</tr>
Gera o seguinte saida no Console do Eclipse:
AQUI 1
Entrei Try
15:00:44,770 ERROR PARSER:33 - line 1:1: unexpected token: LocalAtendimento
Entrei Catch
ERRO node to traverse cannot be null!
Return do Catch
Se puder ajudar, agradeço.