Inserir dados em mais de uma tabela

5 respostas
joede.fadel

tenho duas tabelas, a tabela empresa e a tabela proprietario,
como que faço para pegar o id do proprietario q acabei de inserir
para inserir na tabela empresa???
tenho duas classes mapeadas do banco

a classe empresa

/*
 * empresa.java
 *
 * Created on 20 de Outubro de 2007, 17:10
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package anorp.Banco;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Classe de entidade empresa
 * 
 * @author Facul
 */
@Entity
@Table(name = "empresa")
@NamedQueries( {
        @NamedQuery(name = "empresa.findByIdclente", query = "SELECT c FROM empresa c WHERE c.idclente = :idclente"),
        @NamedQuery(name = "empresa.findByCnpj", query = "SELECT c FROM empresa c WHERE c.cnpj = :cnpj"),
        @NamedQuery(name = "empresa.findByEdereco", query = "SELECT c FROM empresa c WHERE c.edereco = :edereco"),
        @NamedQuery(name = "empresa.findByRazaosocial", query = "SELECT c FROM empresa c WHERE c.razaosocial = :razaosocial"),
        @NamedQuery(name = "empresa.findByNomefantazia", query = "SELECT c FROM empresa c WHERE c.nomefantazia = :nomefantazia")
    })
public class empresa implements Serializable {

    @Id
    @Column(name = "idclente", nullable = false)
    private Integer idclente;

    @Column(name = "cnpj")
    private String cnpj;

    @Column(name = "edereco")
    private String edereco;

    @Column(name = "razaosocial")
    private String razaosocial;

    @Column(name = "nomefantazia")
    private String nomefantazia;

    @OneToMany(mappedBy = "empresaidclente")
    private Collection<Nota> notaCollection;

    @OneToMany(mappedBy = "empresaidclente")
    private Collection<Fone> foneCollection;
    
    /** Creates a new instance of empresa */
    public empresa() {
        setCnpj("");
        setEdereco("");
        setFoneCollection(null);
        setIdclente(0);
        setNomefantazia("");
        setNotaCollection(null);
        setRazaosocial("");
    }

    /**
     * Cria uma nova instância de empresa com os valores especificados.
     * @param idclente o idclente do empresa
     */
    public empresa(Integer idclente) {
        this.idclente = idclente;
    }

    /**
     * Define o idclente deste empresa.
     * @return o idclente
     */
    public Integer getIdclente() {
        return this.idclente;
    }

    /**
     * Define o idclente deste empresa para o valor especificado.
     * @param idclente o novo idclente
     */
    public void setIdclente(Integer idclente) {
        this.idclente = idclente;
    }

    /**
     * Define o cnpj deste empresa.
     * @return o cnpj
     */
    public String getCnpj() {
        return this.cnpj;
    }

    /**
     * Define o cnpj deste empresa para o valor especificado.
     * @param cnpj o novo cnpj
     */
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    /**
     * Define o edereco deste empresa.
     * @return o edereco
     */
    public String getEdereco() {
        return this.edereco;
    }

    /**
     * Define o edereco deste empresa para o valor especificado.
     * @param edereco o novo edereco
     */
    public void setEdereco(String edereco) {
        this.edereco = edereco;
    }

    /**
     * Define o razaosocial deste empresa.
     * @return o razaosocial
     */
    public String getRazaosocial() {
        return this.razaosocial;
    }

    /**
     * Define o razaosocial deste empresa para o valor especificado.
     * @param razaosocial o novo razaosocial
     */
    public void setRazaosocial(String razaosocial) {
        this.razaosocial = razaosocial;
    }

    /**
     * Define o nomefantazia deste empresa.
     * @return o nomefantazia
     */
    public String getNomefantazia() {
        return this.nomefantazia;
    }

    /**
     * Define o nomefantazia deste empresa para o valor especificado.
     * @param nomefantazia o novo nomefantazia
     */
    public void setNomefantazia(String nomefantazia) {
        this.nomefantazia = nomefantazia;
    }

    /**
     * Define o notaCollection deste empresa.
     * @return o notaCollection
     */
    public Collection<Nota> getNotaCollection() {
        return this.notaCollection;
    }

    /**
     * Define o notaCollection deste empresa para o valor especificado.
     * @param notaCollection o novo notaCollection
     */
    public void setNotaCollection(Collection<Nota> notaCollection) {
        this.notaCollection = notaCollection;
    }

    /**
     * Define o foneCollection deste empresa.
     * @return o foneCollection
     */
    public Collection<Fone> getFoneCollection() {
        return this.foneCollection;
    }

    /**
     * Define o foneCollection deste empresa para o valor especificado.
     * @param foneCollection o novo foneCollection
     */
    public void setFoneCollection(Collection<Fone> foneCollection) {
        this.foneCollection = foneCollection;
    }

    /**
     * Retorna um valor de código hash para o objeto.  Esta implementação computa
     * um valor de código hash baseado nos campos id deste objeto.
     * @return um valor de código hash para este objeto.
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.idclente != null ? this.idclente.hashCode() : 0);
        return hash;
    }

    /**
     * Determina se outro objeto é igual a este empresa.  O resultado é
     * <code>true</code> se e somente se o argumento não for nulo e for um objeto empresa o qual
     * tem o mesmo valor para o campo id como este objeto.
     * @param object o objeto de referência com o qual comparar
     * @return <code>true</code> se este objeto é o mesmo como o argumento;
     * <code>false</code> caso contrário.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof empresa)) {
            return false;
        }
        empresa other = (empresa)object;
        if (this.idclente != other.idclente && (this.idclente == null || !this.idclente.equals(other.idclente))) return false;
        return true;
    }

    /**
     * Retorna uma representação literal deste objeto.  Esta implementação cria
     * uma representação baseada nos campos id.
     * @return uma representação literal deste objeto.
     */
    @Override
    public String toString() {
        return "anorp.Banco.empresa[idclente=" + idclente + "]";
    }
    
}

e a classe proprietario

/*
 * Proprietario.java
 *
 * Created on 20 de Outubro de 2007, 17:10
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package anorp.Banco;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Classe de entidade Proprietario
 * 
 * @author Facul
 */
@Entity
@Table(name = "proprietario")
@NamedQueries( {
        @NamedQuery(name = "Proprietario.findByIdproprietario", query = "SELECT p FROM Proprietario p WHERE p.idproprietario = :idproprietario"),
        @NamedQuery(name = "Proprietario.findByNome", query = "SELECT p FROM Proprietario p WHERE p.nome = :nome"),
        @NamedQuery(name = "Proprietario.findByCpf", query = "SELECT p FROM Proprietario p WHERE p.cpf = :cpf"),
        @NamedQuery(name = "Proprietario.findByEndereco", query = "SELECT p FROM Proprietario p WHERE p.endereco = :endereco")
    })
public class Proprietario implements Serializable {

    @Id
    @Column(name = "idproprietario", nullable = false)
    private Integer idproprietario;

    @Column(name = "nome")
    private String nome;

    @Column(name = "cpf")
    private String cpf;

    @Column(name = "endereco")
    private String endereco;

    @OneToMany(mappedBy = "proprietarioidproprietario")
    private Collection<Fone> foneCollection;
    
    /** Creates a new instance of Proprietario */
    public Proprietario() {
        setCpf("");
        setEndereco("");
        setFoneCollection(null);
        setIdproprietario(0);
        setNome("");
    }

    /**
     * Cria uma nova instância de Proprietario com os valores especificados.
     * @param idproprietario o idproprietario do Proprietario
     */
    public Proprietario(Integer idproprietario) {
        this.idproprietario = idproprietario;
    }

    /**
     * Define o idproprietario deste Proprietario.
     * @return o idproprietario
     */
    public Integer getIdproprietario() {
        return this.idproprietario;
    }

    /**
     * Define o idproprietario deste Proprietario para o valor especificado.
     * @param idproprietario o novo idproprietario
     */
    public void setIdproprietario(Integer idproprietario) {
        this.idproprietario = idproprietario;
    }

    /**
     * Define o nome deste Proprietario.
     * @return o nome
     */
    public String getNome() {
        return this.nome;
    }

    /**
     * Define o nome deste Proprietario para o valor especificado.
     * @param nome o novo nome
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * Define o cpf deste Proprietario.
     * @return o cpf
     */
    public String getCpf() {
        return this.cpf;
    }

    /**
     * Define o cpf deste Proprietario para o valor especificado.
     * @param cpf o novo cpf
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * Define o endereco deste Proprietario.
     * @return o endereco
     */
    public String getEndereco() {
        return this.endereco;
    }

    /**
     * Define o endereco deste Proprietario para o valor especificado.
     * @param endereco o novo endereco
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**
     * Define o foneCollection deste Proprietario.
     * @return o foneCollection
     */
    public Collection<Fone> getFoneCollection() {
        return this.foneCollection;
    }

    /**
     * Define o foneCollection deste Proprietario para o valor especificado.
     * @param foneCollection o novo foneCollection
     */
    public void setFoneCollection(Collection<Fone> foneCollection) {
        this.foneCollection = foneCollection;
    }

    /**
     * Retorna um valor de código hash para o objeto.  Esta implementação computa
     * um valor de código hash baseado nos campos id deste objeto.
     * @return um valor de código hash para este objeto.
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.idproprietario != null ? this.idproprietario.hashCode() : 0);
        return hash;
    }

    /**
     * Determina se outro objeto é igual a este Proprietario.  O resultado é
     * <code>true</code> se e somente se o argumento não for nulo e for um objeto Proprietario o qual
     * tem o mesmo valor para o campo id como este objeto.
     * @param object o objeto de referência com o qual comparar
     * @return <code>true</code> se este objeto é o mesmo como o argumento;
     * <code>false</code> caso contrário.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Proprietario)) {
            return false;
        }
        Proprietario other = (Proprietario)object;
        if (this.idproprietario != other.idproprietario && (this.idproprietario == null || !this.idproprietario.equals(other.idproprietario))) return false;
        return true;
    }

    /**
     * Retorna uma representação literal deste objeto.  Esta implementação cria
     * uma representação baseada nos campos id.
     * @return uma representação literal deste objeto.
     */
    @Override
    public String toString() {
        return "anorp.Banco.Proprietario[idproprietario=" + idproprietario + "]";
    }
    
}

5 Respostas

Giulliano

o método save do hibernate te retorna o id gerado pelo banco

Integer idGerado = sessao.save(propietário);

joede.fadel

ptz esqueci de colocar q estou usando jpa e que estou fazendo para pc

esse metodo sessao.save tem em jpa??

grato pela ajuda

Giulliano

cara a JPA é idêntica ao hibernate mudam apenas os nomes e pouquissímos conceitos… se vc não esta usando um método proprietário para inserir, ou seja, esta fazendo via query…aí vai depender do banco de dados…

no mysq por exemplo vc usaria select last_insert_id() from tabela;

sujeito a pegar o id de outro registro em sistemas distribuídos…aí precisaria dar um select com um parametro passando o nome do proprietario

select * from tabela where nome = “nomeinserido”;

Giulliano

cara a JPA é idêntica ao hibernate mudam apenas os nomes e pouquissímos conceitos… se vc não esta usando um método proprietário para inserir, ou seja, esta fazendo via query…aí vai depender do banco de dados…

no mysq por exemplo vc usaria select last_insert_id() from tabela;

sujeito a pegar o id de outro registro em sistemas distribuídos…aí precisaria dar um select com um parametro passando o nome do proprietario

select id from tabela where nome = “nomeinserido”;

joede.fadel

valew

Criado 24 de outubro de 2007
Ultima resposta 24 de out. de 2007
Respostas 5
Participantes 2