Estou com o seguinte probema, tenho um form onde existe um jbombobox que é preenchido com uma lista de objetos carregados via hibernate, veja o método que criei para isto:
Até ai tudo bem o meu campo é preenchido normalmente, o problema que tenho é na hora de salvar o dado na base de dados, preciso pegar o objeto que é selecionado pelo usuário, para o relaciomamento do hibernate funcionar, ou seja, preciso passar o objeto para o insert funcionar.
Vc está adicionando uma Sring no Combo(fieldEstagio) e não um objeto Estagio.
Faça o seguinte, sobrescreva o toString() na sua classe estágio e adicione ela no Combo(fieldEstagio).
A Paz!!
pauloperes
Paulo,
Não entendi o q vc me falou, tem como me dar mais alguma dica, veja a minha classe Estagio
/** * Classe Estagio * Está classe é um bean que contém todos os tipo de estágio em que um aluno * pode estar participando **/packagesyslagg.beans;importjava.io.Serializable;importjava.util.Collection;importjava.util.Set;importjavax.persistence.*;@Entity(access=AccessType.FIELD)@Table(name="Estagio")@SequenceGenerator(name="SEQ_ESTAGIO",sequenceName="SEQ_ESTAGIO")publicclassEstagioimplementsSerializable{@Id(generate=GeneratorType.SEQUENCE,generator="SEQ_ESTAGIO")privateintid_estagio;@Column(name="nome",nullable=false,length=50)privateStringnome;@Column(name="descricao",nullable=false,length=255)privateStringdescricao;/** * Criando um relacionamento entre as * classes Estagio e Aluno **/@OneToMany(mappedBy="estagio")privateSet<Aluno>alunos;publicvoidsetId(intid){this.id_estagio=id;}publicintgetId(){returnthis.id_estagio;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetNome(){returnthis.nome;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}publicStringgetDescricao(){returnthis.descricao;}}
Paulo
paulohbmetal
Adicione o seguinte método a sua classe:
public String toString(){
return nome;
}
Então a partir disso ao invés de adicionar o nome do Estágio no Combo vc adiciona logo o objeto estágio. Daí o Combo vai chamar seu método sobrescrito(toString()) para ser mostrado.
Então seu código de inserção no Combo irá ficar assim:
public void PreencheEstagio(){
this.sessao = this.factory.openSession();
List lista_estagio = this.sessao.createQuery("from syslagg.beans.Estagio").list();
for(Object o : lista_estagio){
fieldEstagio.addItem(o);
}
this.factory.close();
}