Realizar Salvamento de Dados de uma JComboBox.
Ola Pessoal.
Estou tendo problemas para salvar os dados na tabela mae.
Eis minhas Entidades:
Entidade de Usuarios:
Entidade de Nivel de Usuarios :
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 :
Amigos um forte abraco e obrigado a todos.
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
Curtidas 0
Respostas
Davi Costa
20/10/2011
Não é o hibernate que vai pegar, vc que vai passar o nível selecionado na tela para o usuário.
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
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
GOSTEI 0
Ricardo Scarpim
20/10/2011
Davi muito obrigado pela ajuda, mais seria possivel me dar uma dica de como fazer isso, estou tentando assim :
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.
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.
GOSTEI 0
Davi Costa
20/10/2011
Vc vai ter que ver quais métodos disponíveis vc tem:
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
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
GOSTEI 0
Ricardo Scarpim
20/10/2011
Existe algum exemplo disto ?
GOSTEI 0
Robson Teixeira
20/10/2011
busque no site da sun tem uns exemplos de JComboBox.
GOSTEI 0
Ricardo Scarpim
20/10/2011
A Solucao Encontrada foi a seguinte :
Espero que eu possa ajudar alguem e se alguem tiver outra implementacao fico feliz, um abraco a todos.
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.
GOSTEI 0
Davi Costa
20/10/2011
Espero que me entenda, mas essa não é a solução ideal, vc em algum momento listou seu combo com esses itens vindos do banco e vai no banco de novo. Não é a melhor saída.
att Davi
att Davi
GOSTEI 0
Davi Costa
20/10/2011
Vc já tentou isso:
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
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
GOSTEI 0
Ricardo Scarpim
20/10/2011
Na verdade Davi o que deseja e carregar a combo com valores em string ou seja somente a Descricao do nivel de usuario, agora se existe uma maneira de tambem carregar o codigo do nivel de maneira oculta sem que o usuario saiba eu implementaria esta opcao tambem, Obrigado.
GOSTEI 0
Davi Costa
20/10/2011
Veja a documentação, vc pode criar não só uma combo de String e sim de objetos,
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
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
GOSTEI 0
Dyego Carmo
20/10/2011
Opa !
Conseguiu resolver ?
Se sim... por favor feche o chamado :)
Valeu !
Conseguiu resolver ?
Se sim... por favor feche o chamado :)
Valeu !
GOSTEI 0
Ricardo Scarpim
20/10/2011
Ola Dyego estou seguindo as suas video aulas, fantasticas, mais gostaria de saber como faco pra dar um select na tabela e carregar em um combobox por exemplo, utilizando Hibernate, muito obrigado um forte abraco.
GOSTEI 0
Ricardo Scarpim
20/10/2011
Dyego eu gostaria de falar com voce em particular, existe a possibilidade ? Por favor me responda um forte abraco.
GOSTEI 0
Dyego Carmo
20/10/2011
Opa , manda uma MSG para mim no meu email... dyego.carmo@go-java.com
:)
:)
GOSTEI 0
Maxwell Chaves
20/10/2011
Davi muito obrigado pela ajuda, mais seria possivel me dar uma dica de como fazer isso, estou tentando assim :
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.
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
GOSTEI 0