Herança com Hibernate

2 respostas
fbeli

Srs,

Tenho a classe Vendedor que extende Pessoa, Pessoa tem um relacionamento 1-to-1 com Endereco, todas usariam a mesma chave (id_pesssoa).
Qndo eu salvo Vendedor são executadas 4 transações com o banco:

Hibernate: /* insert br.com.ydartes.bean.Vendedor / insert into pessoa (nome, telefone, email, celular, CPF, login, senha, acesso, id_pessoa) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: /
insert br.com.ydartes.bean.Vendedor / insert into vendedor (id_vendedor) values (?)
Hibernate: /
insert br.com.ydartes.bean.Pessoa / insert into pessoa (nome, telefone, email, celular, CPF, login, senha, acesso, id_pessoa) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: /
insert br.com.ydartes.bean.Endereco */ insert into endereco (bairro, cidade, complemento, estado, numero, rua, cep, id_pessoa) values (?, ?, ?, ?, ?, ?, ?, ?)

Com isso e crio 2 Pessoas, 1 vendedor e 1 endereço, o endereço fica associada a 2 Pessoa criada.

uso Sessao.save(vendedor) e tudo acontece.

Vendedor.hbm.xml

<hibernate-mapping>
	<joined-subclass name="br.com.ydartes.bean.Vendedor" extends="br.com.ydartes.bean.Pessoa" table="vendedor">	
		<key column="id_vendedor"/>			
		<set name="clientes"
			 inverse="true"
			 cascade="save-update">
			<key column="vendedor_id"/>
			<one-to-many class="br.com.ydartes.bean.Cliente"/>
		</set>	
	</joined-subclass>
</hibernate-mapping>

Pessoa.hbm.xml

endereco.hbm.xml




pessoa











2 Respostas

Mauricio_Linhares

Cad o código que faz isso?

fbeli

VendedorDAO.java

public static void salvar(Pessoa pes){
		
		Session sessao = HibernateUtility.getSession(); //Abrindo uma sessão
		Transaction transaction = sessao.beginTransaction(); //Iniciando uma transação
		
		Vendedor ven = new Vendedor();
		ven.createFromPessoa(pes);//seta as configurações de Pessoa para Vendedor
		sessao.save(ven);
		
		transaction.commit(); //Finalizando a transação
		sessao.close(); //Fechando a sessão
		
	}

Vendedor.java

public class Vendedor extends Pessoa{
	private Set clientes;
	public Set getClientes() {
		return clientes;
	}
	public void setClientes(Set clientes) {
		this.clientes = clientes;
	}
	public void createFromPessoa(Pessoa pes){		
                               this.setCpf(pes.getCpf());
		this.setEmail(pes.getEmail());
		this.setEndereco(pes.getEndereco());
		this.setId_pessoa(pes.getId_pessoa());
                            ...
               }
}

Pessoa.java

public class Pessoa {	
	private Integer id_pessoa;
	private String nome;	
          ...
          //getters e setters
}
Criado 17 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 2
Participantes 2