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