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