Realizar Salvamento de Dados de uma JComboBox.
20/10/2011
0
Estou tendo problemas para salvar os dados na tabela mae.
Eis minhas Entidades:
Entidade de Usuarios:
@Entity @SequenceGenerator(name = nome_seq, sequenceName = us_codigo, allocationSize = 1, initialValue = 1) @Table(name=us_usuarios) public class us_usuarios implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator=nome_seq) private Integer us_codigo; @Column(length=50) private String us_nome; @OneToOne(targetEntity=us_nivel.class,cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name=us_cod_nivel) private us_nivel us_cod_nivel;
Entidade de Nivel de Usuarios :
@Entity @Table(name=us_nivel) public class us_nivel implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id private Integer ni_codigo; @Column(length=50) private String ni_descricao;
Agora vem a Pergunta:
No Formulario tenho uma JComboBox trazendo todos os Niveis de Usuarios. No momento de salvar os Dados do Usuario preciso que o hibernate pegue o conteudo desta JComboBox e me retorne o codigo de nivel do usuario, um relacionamento, pois preciso armazenar na tabela de Usuarios o codigo de nivel do mesmo.
Estou Salvando os Dados da seguinte Forma :
Session session = sessionFactory.openSession(); session.beginTransaction(); // Aqui seria o momento de passar o codigo do nivel. us_nivel nivel = ??????; us_usuarios usuarios = new us_usuarios(); usuarios.setUs_nome(usu_nome.getText()); usuarios.setUs_cod_nivel(nivel); session.save(usuarios);
Amigos um forte abraco e obrigado a todos.
Ricardo Scarpim
Posts
20/10/2011
Davi Costa
Acredito que a sua pesquisa deve ser em cima de como pegar o nível selecionado na JComboBox. Depois é só passá-lo para o usuário quando for inserí-lo. Esse nível já vem do banco, não precisamos inserí-lo mais.
att Davi
20/10/2011
Ricardo Scarpim
us_nivel nivel = (us_nivel) session.get(us_nivel.class, usu_cod_nivel.getSelectedIndex());
Mais ele me retorna o Index da combo ? e nao o valor da base de dados.
20/10/2011
Davi Costa
usu_cod_nivel
para esse objeto, deve ter alguma forma de vc recuperar o nivel inteiro, sem precisar ir no banco mais uma vez.. aredito q com uma pesquisa rápida vc consegue resolver seu problema.
att Davi
20/10/2011
Robson Teixeira
20/10/2011
Ricardo Scarpim
us_nivel nivel = (us_nivel) session.createQuery(SELECT NIV FROM us_nivel NIV WHERE NIV.ni_descricao =:ni_descricao).setString(ni_descricao,usu_cod_nivel.getSelectedItem().toString()).uniqueResult();
Espero que eu possa ajudar alguem e se alguem tiver outra implementacao fico feliz, um abraco a todos.
20/10/2011
Davi Costa
att Davi
20/10/2011
Davi Costa
us_nivel nivel = (us_nivel)usu_cod_nivel.getSelectedItem();
Só não vai funcionar se seu JComboBox for só de String e não de do seu objeto us_nivel, o que também alteraria, a não ser que sua combo esteja em memória e em nehum momento vc tenha capturado os níveis do banco, o que tb estaria estranho.
att Davi
21/10/2011
Ricardo Scarpim
21/10/2011
Davi Costa
daí vc passaria já seu objeto completo vindo do banco. Daí com o método getSelectedItem() bastaria um cast para vc pegar seu objeto inteiro (sem ter que ir no banco de novo) e passaria o nível para o seu usuário. Simples simples.
documentação:
http://download.oracle.com/javase/6/docs/api/javax/swing/JComboBox.html
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JComboBox.html
outros links interessantes:
http://www.students.ic.unicamp.br/~ra079760/arquivos/curso_java/Curso%20de%20Java%20%E2%80%93%20Aula%205.pdf
http://www.javabeginner.com/java-swing/java-jcombobox-class-example/all/1
http://java.comsci.us/examples/swing/JComboBox.html
Att Davi
21/10/2011
Dyego Carmo
Conseguiu resolver ?
Se sim... por favor feche o chamado :)
Valeu !
22/10/2011
Ricardo Scarpim
22/10/2011
Ricardo Scarpim
25/10/2011
Dyego Carmo
:)
13/01/2020
Maxwell Chaves
us_nivel nivel = (us_nivel) session.get(us_nivel.class, usu_cod_nivel.getSelectedIndex());
Mais ele me retorna o Index da combo ? e nao o valor da base de dados.
Eu ainda não utilizo o Hibernate, mas você pode resolver da mesma forma que eu, é só adaptar:
Populo o jCombobox com uma lista carregada de objetos resultantes de uma consulta no momento em que a tela é inicializada. Depois que todos os campos estão preenchidos ao clicar no botão salvar ele aciona um evento que executa um método que percorre a lista através de um for e compara o item selecionado do jcombobox com cada objeto da lista e ao encontra seta o id (valor da base de dados) para o objeto que também já recebeu set de todos os demais campos, e em seguida os dados são persistidos para a base de dados.
Olhe o exemplo:
https://github.com/maxwelldeveloper7/TFD/blob/master/src/tfd/visao/FrmMotoristas.java
Clique aqui para fazer login e interagir na Comunidade :)