Como Salvar este Relacionamento Tabela Mae e Tabela Filha

4 respostas
R

Ola Pessoal.

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);

4 Respostas

A

cara,

vc vai quer q pegar, por exemplo o codigo do Jcombobox, e com codigo fazer uma consulta no banco para vc ter um entidade persistente, ai basta vc atribuir a entendade principal que vai funcionar.

t+

R

A Solucao Encontrada foi a seguinte :

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.

A

cara,

vc pode pegar seu objeto us_nivel, com id e descricao setado e dar um save nele, o retorno do save vai ser um objeto sincronizado com o banco e com isso vc nao precisa fazer um sql.

t+

R

Colega neste caso eu teria que salvar somente no momento em que o cliente clicar no botao salvar, eu estou fazendo para caso ele digite um valor novo na combo, automaticamente ao sair onExit ele vai pesquisar a base e fazer a inclusao se preciso, agradeco a dica e a ajuda amigo um forte abraco… Ricardo Scarpim.

Criado 19 de outubro de 2011
Ultima resposta 20 de out. de 2011
Respostas 4
Participantes 2