Nao consigo Salvar Relacionamento no Hibernate.
17/12/2011
0
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
Posts
18/12/2011
Robson Teixeira
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
18/12/2011
Robson Teixeira
não se preucupe com a historia de indice de chaveEstrangeira pois o hibernate cuida disso ok??
18/12/2011
Ricardo Scarpim
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 ?
18/12/2011
Ricardo Scarpim
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.
21/12/2011
Ricardo Scarpim
09/01/2012
Dyego Carmo
Problema resolvido ? Poderia fechar o chamado ?
Obrigadao !!!
Clique aqui para fazer login e interagir na Comunidade :)