esse código faz carregar em p:selectOneMenu todos os pacientes cadastrados em meu banco de dados,
me mostra o nome do paciente e para gravar na tabela de agendamento o id do paciente, pois na tabela
de agendamento o paciente é chave estrangeira, então é necessário o id do paciente, ate aí tudo bem.
tenho também o código abaixa que carrega as informações do paciente na mesma tela:
o que eu quero fazer é o seguinte. No momento que eu selecionar um paciente pelo meu p:selectOneMenu
me traga as informações correspondente aquele paciente que eu selecionar.
aqui está minha classe pacienteController onde eu listo todos os pacientes e carrego no meu p:selectOneMenu somente o nome de todos os pacientes cadastrados na minha tabela paciente
public List<Paciente> listaPaciente() {
List<Paciente> lista;
lista = new PacienteDao().list();
return lista;
}
e aqui está o código da minha classe PacienteDao:
public List<Paciente> list() {
Session ss = HibernateUtil.getSessionFactory().getCurrentSession();
ss.beginTransaction();
List lista = ss.createQuery("From paciente").list();
ss.beginTransaction().commit();
return lista;
}
não sei se você conseguiu entender meu código, mas aqui: [code]<p:selectOneMenu effect=“fade"
value=”#{agendamentoController.agendamento.id_paciente}"
style="height:20px; font-size: 13px; width: 250px " >
é o código que faz a inserção no banco, pra fazer aproveitamento, eu queria já selecionar o paciente e simplesmente mostrar pro usuário algumas informações desse paciente aqui nesse código:
e com esse seu código no momento que clico no meu botão salvar, ele não insere o id_paciente na tabela de agendamento.
eu não teria que colocar pra listar os dados do paciente em algum evento tipo “selected alguma coisa” do meu p:selectOneMenu?
Porque daí cada vez que eu selecionar um paciente, ele vai fazer a busca no banco de dados e me trazer as informações daquele paciente que eu selecionei…
mas sera que existe algum evento no p:selectOneMenu que me faça isso?
Por isso que eu disse pra vc pegar direto o objeto no campo value do selectOneMenu… ai conforme vc vai alterando, seu objeto já vai alterando junto… com isso, qualquer label ou inputText que tiver na tela referenciando esse objeto (#{paciente.nome}), ja vai ser automaticamente alterado. Com isso vc nao precisa fazer busca nenhuma…
Trabalhe com objetos e não com IDs + busca…
Repetindo… na sua entidade de Agendamento, vc deve ter um atributo com referencia ao objeto Paciente, e não um Long id, por exemplo…
Exemplo:
@Entity
public class Agendamento {
@Id
@GeneratedValue
private Long id;
@Column(name = "DATA_AGENDAMENTO")
private Date dataAgendamento
@ManyToOne
private Paciente paciente;
}
Seria o certo… mas lembre que vc precisa de conhecimentos básicos de mapeamentos jpa como @OneToMany, @ManyToOne, @ManyToMany, e vai precisar alterar boa parte do seu sistema…
[quote]humm… isso que vai f… não sei como fazer isso… não teria como você alterar meu código pra mim ter como exemplo??
ou então não existe uma maneira mais simples pra adaptar no meu código?[/quote]
Ai é pedir de mais né…
Mas faça o seguinte… no seu ManagedBean… crie (vi que vc ja tem, mas não seu pra que vc usa) uma variavel do tipo Paciente, ai la no seu value do selectOneMenu, e lá onde vc pega os dados, aponta tudo pra esse objeto…