[NÃO RESOLVIDO] Erro ao preencher JComboBox JPA

Olá pessoal!!
Tudo certo?

Ao realizar uma consulta, os dados de médico devem aparecer na tela.

O que não estou conseguindo fazer é selecionar o em um JComboBox a Especialidade que está cadastrada no meu BD referente ao médico.

Sendo que há um relacionamento entre as minhas entidades médico e especialidade MxN, mas na tabela que irei buscar a especialidade do médico tem apenas 1 registro de especialidade.

    public List<Especialidade> getEspecialidades() {
        return especialidades;
    }    

Tentei diversas formas e nada… A última que tentei foi:

        Especialidade esp = new Especialidade();
        esp = (Especialidade) medico.getEspecialidades().get(0);
        jcbEspecialidade.setSelectedItem(esp);

Achei que teria alguma lógica isso que escrevi… mas… não tá dando…
agluém sabe como faço??

Obrigada

Cara Dina,

Por favor, tenta explicar novamente, não consegui entender bem o que você esta tentando fazer.

Você não consegue selecionar um valor do Jcombobox

Mostra o erro que está ocorrendo, e informe melhor o problema que está tendo.

Boa noite Dina.

Se por acaso você está utilizando o JComboBox do Swing.

Especialidade esp = new Especialidade();   
esp = (Especialidade) medico.getEspecialidades().get(0);   
jcbEspecialidade.setSelectedItem(esp);  

esp tem que ser um int, no entetanto vc está atribuindo um Objeto Especialidade.

Acredito que vc terá que fazer.

jcbEspecialidade.setSelectedItem(esp.getAlgumaCoisa// Retorna um int);  

Foi mal vc não está usando o indice…

Olá pessoal!!
Em primeiro lugar, obrigada a todos que tentaram me ajudar.

Bom, vou tentar explicar melhor a minha dúvida…

O meu projeto é em JPA, então tenho duas classes @Entity, Medico.java e Especialidade.java.

Onde há um relacionamento MxN entre eles.
:arrow: Pois 1 médico pode ter n especialidades.
:arrow: E n médicos podem ter 1 mesma especialidade.

Isso foi representado na minha classe Entity da seguinte forma:
Classe Médico.java

    @ManyToMany(targetEntity=Especialidade.class)
    @JoinTable(name="medico_especialidade", joinColumns=@JoinColumn(name="codigopessoa"), inverseJoinColumns=@JoinColumn(name="codigoespecialidade"))
    private List<Especialidade> especialidades = null;

    public void setEspecialidades(List<Especialidade> especialidades) {
        this.especialidades = especialidades;
    }

    public List<Especialidade> getEspecialidades() {
        return especialidades;
    }
     .............

[color=red]Até aí tudo ok.[/color]

[color=darkblue][size=14]O problema ocorre quando:[/size][/color]
Quando eu faço uma busca por 1 médico e quero resgatar as especialidades dele. O return é um List…

Antes eu queria que o resultado aparecesse em um JComboBox, mas não seria isso o mais adequado… esqueçamos o JComboBox… pode ser um outro componente, talvez um componente lista.

A questão é como eu vou trabalhar com o retorno (medico.getEspecialidade()) e colocar os dados no meu componente na tela…?

Passei o dia todo tentando resolver esse problema… :cry: :cry: :cry:
Tentei colocar em Object, fazer cast para Especialidade…
Tentei colocar em um ArrayList, resgatar o index…
Tentei tentei tentei tanta coisa…

Em nenhum momento teve erro. Isso que me deixou louca…!! hehehe
Simplesmente não aparecia nada, nem dava certo e nem lançava erro…
Era como se pulasse essa minha parte do código… :?: :?: :?:

Não sei se ficou mais clara a minha pergunta, espero que sim… Qualquer coisa eu volto a explicar.

Obrigada novamente pessoal!

Caro Dina,

Se entendi bem, o que você deseja é popular um combobox com o retorno do banco, se for isto vou deixar um exemplo de como fiz em um trabalho da faculdade utilizando JPA e SWING.

//instancia uma variavel controladora do jpa
EventoJpaController eventoJpaController = new EventoJpaController();

        //criacao de um modelo onde é passado todos os eventos disponiveis
        ComboBoxModel modelEvento = new DefaultComboBoxModel(eventoJpaController.findEventoEntities().toArray());

        //passando modelo para tela
        jcbEvento.setModel(modelEvento);

Um exemplo de como você poderia fazer o seu em um combobox

//fazer uma busca do medico desejado
Medico medico = MedicoFacade.find(id);

//inicia um modelo para o combobox
//para este modelo deve-se passar um array do object podendo ser tipado tambem
ComboBoxModel modelEspecialidade = new DefaultComboBoxModel(medico.getEspecialidade.toArray());

       //adiciona o modelo criado ao combobox da tela
        jcbEspecialidade.setModel(modelEspecialidade);

Para saber qual a especialidade foi selecionada você faz da seguinte maneira

Especialidade esp = jcbEspecialidade.getmodel.getModel().getSelectedItem();

Espero ter ajudado.
Você tambem pode trabalhar com outros componentes após obter o retorno do banco.