Nao consigo Salvar Relacionamento no Hibernate.
Pessoal Tenho duas Entidades :
A Entidade de EntUsUsuarios :
E a Outra Entidade EntUsNivel
Na hora de Salvar Tenho um Form e nele tenho uma JCombobox que tem os Dados Carregados da Entidade Usuarios Nivel.
A Duvida que nao me deixa dormir e a seguinte :
Na hora de Salvar como eu vou fazer pra pegar o Indice da Tabela de EntUsNivel e salvar na Tabela EntUsUsuarios ?
Estou Tentando Fazer algo do Tipo, mais nao ta Dando muito Certo nao :
Pessoal To muito precisando de Ajuda, agradeco desde ja a Atencao e Ajuda de todos.
A Entidade de EntUsUsuarios :
@Entity @Table(name=usu_usuarios) @SequenceGenerator(name = nome_seq, sequenceName = usu_codigo, allocationSize = 1, initialValue = 1) public class EntUsUsuarios implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator=nome_seq) private Integer usu_codigo; @Column private String usu_nome; @Column private String usu_login; @Column private String usu_senha; @OneToOne @JoinColumn(name=usu_cod_nivel, nullable = true) private EntUsNivel usu_cod_nivel;
E a Outra Entidade EntUsNivel
// Selecionar os Niveis pela Descricao do Nivel de Usuario. @NamedQueries({ @NamedQuery ( name = EntUsNivel.DescNivel, query = from EntUsNivel nv where nv.niv_descricao = :descricao), @NamedQuery ( name = EntUsNivel.CarregaNivel, query = from EntUsNivel nv order by nv.niv_descricao) }) @Entity @Table(name=usu_nivel) @SequenceGenerator(name = nome_seq, sequenceName = niv_codigo, allocationSize = 1, initialValue = 1) public class EntUsNivel implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator=nome_seq) private Integer niv_codigo; @Column(name= niv_descricao) private String niv_descricao;
Na hora de Salvar Tenho um Form e nele tenho uma JCombobox que tem os Dados Carregados da Entidade Usuarios Nivel.
A Duvida que nao me deixa dormir e a seguinte :
Na hora de Salvar como eu vou fazer pra pegar o Indice da Tabela de EntUsNivel e salvar na Tabela EntUsUsuarios ?
Estou Tentando Fazer algo do Tipo, mais nao ta Dando muito Certo nao :
try { // Testando para Verificar se a Sessao foi Aberta. Session ses = HibernateUtil.getInstance().getSession(); // Pegar o Nivel de Usuarios. Query nivel = ses.getNamedQuery(EntUsNivel.DescNivel).setString(descricao, us_cod_nivel.getSelectedItem().toString()); EntUsUsuarios usuarios = new EntUsUsuarios(); usuarios.setUsu_nome(txnome.getText()); usuarios.setUsu_login(txlogin.getText()); usuarios.setUsu_senha(txsenha.getText()); //usuarios.setUsu_cod_nivel(); // E Aqui que preciso pegar o Indice da Tabela Estrangeira ???????? UsUsuariosDAO userDao = new UsUsuariosDAO(); userDao.InserirUsuario(usuarios); ses.close();
Pessoal To muito precisando de Ajuda, agradeco desde ja a Atencao e Ajuda de todos.
Ricardo Scarpim
Curtidas 0
Respostas
Robson Teixeira
17/12/2011
Olá rick é o seguinte quando você for persistir seu objeto do tipo EntUsUsuarios tenha o atributo usu_cod_nivel q é do tipo EntUsNivel preenchido. no caso do seu codigo postado seria assim.
espero ter ajudado.
att
robson
try { // Testando para Verificar se a Sessao foi Aberta. Session ses = HibernateUtil.getInstance().getSession(); // Pegar o Nivel de Usuarios. Query nivel = ses.getNamedQuery(EntUsNivel.DescNivel).setString(descricao, us_cod_nivel.getSelectedItem().toString()); EntUsNivel nivelUsu=nivel.uniqueResult();//use esse metodo ou algum outro que retorne somente 1 objeto da consulta //executada EntUsUsuarios usuarios = new EntUsUsuarios(); usuarios.setUsu_nome(txnome.getText()); usuarios.setUsu_login(txlogin.getText()); usuarios.setUsu_senha(txsenha.getText()); usuarios.setUsu_cod_nivel(nivelUsu); UsUsuariosDAO userDao = new UsUsuariosDAO(); userDao.InserirUsuario(usuarios); ses.close();
espero ter ajudado.
att
robson
GOSTEI 0
Robson Teixeira
17/12/2011
so completando.
não se preucupe com a historia de indice de chaveEstrangeira pois o hibernate cuida disso ok??
não se preucupe com a historia de indice de chaveEstrangeira pois o hibernate cuida disso ok??
GOSTEI 0
Ricardo Scarpim
17/12/2011
Robson Agradeco de mais a tua atencao e paciencia, mais ele fica dando erro na seguinte linha :
O Netbeans mostra a interrogacao dizendo:
Create Field nivelUsu in ...FCadUsuarios.
O que sera que estou fazendo de Errado, sera que esqueci alguma coisa na classe, um geter, ou um setter ?
usuarios.setUsu_cod_nivel(nivelUsu);
O Netbeans mostra a interrogacao dizendo:
Create Field nivelUsu in ...FCadUsuarios.
O que sera que estou fazendo de Errado, sera que esqueci alguma coisa na classe, um geter, ou um setter ?
GOSTEI 0
Ricardo Scarpim
17/12/2011
Colegas acho que consegui, gracas a preciosa ajuda de voces, meus amigos desenvolvedores !!!!!!
Vou continuar fazendo Testes, mais ate agora ja esta funcionando Tudo ok, agradeco de mais a ajuda de voces.
Pergunta como colocar Resolvido no Post ?
Um forte abraco a todos.
try { // Testando para Verificar se a Sessao foi Aberta. Session ses = HibernateUtil.getInstance().getSession(); // Instanciando o Nivel de Usuarios. EntUsNivel nivelUsu = new EntUsNivel(); // Verificar se Existe Algo na Combo. if(us_cod_nivel.getSelectedIndex()!=-1){ // Pegar o Grupo de Usuarios.); Query nivel = ses.getNamedQuery(EntUsNivel.DescNivel).setString(descricao, us_cod_nivel.getSelectedItem().toString()); nivelUsu = (EntUsNivel) nivel.uniqueResult(); System.out.println(nivelUsu.getNiv_codigo());//use esse metodo ou algum outro que retorne somente 1 objeto da consulta //executada } // Instanciando os Usuarios. EntUsUsuarios usuarios = new EntUsUsuarios(); // Repassando os Dados do Usuario. usuarios.setUsu_nome(txnome.getText()); usuarios.setUsu_login(txlogin.getText()); usuarios.setUsu_senha(txsenha.getText()); usuarios.setUsu_cod_nivel(nivelUsu); // Instanciando a Classe DAO de Usuarios. UsUsuariosDAO userDao = new UsUsuariosDAO(); userDao.InserirUsuario(usuarios); // Fechando a Sessao. ses.close(); }catch(Exception Erro) { JOptionPane.showMessageDialog(null, Erro ao Salvar os Dados Cadastrais : \n + Erro); }
Vou continuar fazendo Testes, mais ate agora ja esta funcionando Tudo ok, agradeco de mais a ajuda de voces.
Pergunta como colocar Resolvido no Post ?
Um forte abraco a todos.
GOSTEI 0
Dyego Carmo
17/12/2011
Voce pode colar o erro que está dando ao salvar ?
GOSTEI 0
Davi Costa
17/12/2011
senão me engano tem uma opção em cima do chmado
att Davi
att Davi
GOSTEI 0
Ricardo Scarpim
17/12/2011
Amigos nao estava dando erro, e que na verdade nao salvava, implementei ate stored procedure para realizar o salvamento, la funcionou, peguei algumas video aulas aqui no site sobre postgre e consegui realizar o salvamento, mais mesmo com o hibernate eu consegui, agradeco de mais a todos, um forte abraco.
GOSTEI 0
Dyego Carmo
17/12/2011
Muito bom !
Problema resolvido ? Poderia fechar o chamado ?
Obrigadao !!!
Problema resolvido ? Poderia fechar o chamado ?
Obrigadao !!!
GOSTEI 0