Mapeamento 1:1 Hibernate

4 respostas
paulo.ubuntu

Ola Pessoal.
Feliz natal pra todo mundoo!!! :smiley:

meu problema é o seguinte eu presciso mapear tabelas dessa forma

Tabela Pessoa


cvCodPes | ccNomPes | | cvCodEnd |
___________________________________|

Tabela Endereco


cvCodEnd | ccNomLogradouro | ccNomComp | ccNumEnd |
_____________________________________________________|
tenho outras tabelas , mas o problema é essa
eu preciso que cvCOdEnd das duas tabelas se relacionem, mas um relacionamento do tipo one-to-one ou outro que funcione rsrs

o Hibernate chega até inserir, mas o cvCodEnd da tabela pessoa fica null, já o da Tabela Endereco, por ser PK ele obtem o numero corretamente.

segue abaixo os Sources e hbms.

Agradeço desde já a atenção

Classe Pessoa

package com.espacodamulher.beans;

import java.util.HashSet;
import java.util.Set;

/**
 * Bean de Pessoa, por definição de Classe Pojo Representa a mesma estrutura do
 * SGDB
 * 
 * @author paulo
 * 
 */
public class Pessoa {
	private Long codigo,codigoEndereco;
	private String nome;
	private Endereco endereco;
	private Set telefones = new HashSet();

	public Pessoa() {
	}

	public Pessoa(String nome) {
		this.nome = nome;
		this.telefones = new HashSet();
	}

	/**
	 * @return the telefones
	 */
	public Set getTelefones() {
		return telefones;
	}

	/**
	 * @param telefones
	 *            the telefones to set
	 */
	public void setTelefones(Set telefones) {
		this.telefones = telefones;
	}

	/**
	 * @param endereco
	 *            the endereco to set
	 */
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	
	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the endereco
	 */
	public Endereco getEndereco() {
		return endereco;
	}

	

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome
	 *            the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the codigoEndereco
	 */
	public Long getCodigoEndereco() {
		return codigoEndereco;
	}

	/**
	 * @param codigoEndereco the codigoEndereco to set
	 */
	public void setCodigoEndereco(Long codigoEndereco) {
		this.codigoEndereco = codigoEndereco;
	}

}

Classe Endereco

package com.espacodamulher.beans;

/**
 * Bean de Endereco, por definição de Classe Pojo Representa a mesma estrutura
 * do SGDB
 * 
 * @author paulo
 * 
 */
public class Endereco {
	private Long codigo;
	private String logradouro, numero, complemento;

	public Endereco() {
	}

	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the logradouro
	 */
	public String getLogradouro() {
		return logradouro;
	}

	/**
	 * @param logradouro
	 *            the logradouro to set
	 */
	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	/**
	 * @return the numero
	 */
	public String getNumero() {
		return numero;
	}

	/**
	 * @param numero
	 *            the numero to set
	 */
	public void setNumero(String numero) {
		this.numero = numero;
	}

	/**
	 * @return the complemento
	 */
	public String getComplemento() {
		return complemento;
	}

	/**
	 * @param complemento
	 *            the complemento to set
	 */
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	

}

Hbms

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.espacodamulher.beans.Pessoa" table="tblPessoa">

		<id type="long" name="codigo" column="cvCodPes">
			<generator class="identity" />
		</id>
		<property name="nome" column="ccNomPes" type="string" not-null="true"
			length="60" />
		<set name="telefones" cascade="all">
			<key column="cvCodPes" />
			<one-to-many class="com.espacodamulher.beans.Telefone" />
		</set>
               <one-to_one name="endereco" class="com.espacodamulher.beans.Endereco" cascade="all" />
			
	</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.espacodamulher.beans.Endereco"
		table="tblEndereco">

		<id type="long" name="codigo" column="cvCodEnd">
			<generator class="identity" />
		</id>
		
		<property name="logradouro" column="ccNomLogradouro"
			type="string" length="70" />
		<property name="complemento" column="ccNomComp" type="string"
			length="10" />
		<property name="numero" column="ccNumEnd" type="string"
			length="5" />
			
		
	</class>
</hibernate-mapping>

Galera Ajuda ae por favorrrrr

4 Respostas

paulo.ubuntu

Ninguem???/

Po Genteee ajuda ae

Javabuntu

olha desde que eu comecei a usar o hibernate foi com JPA, então sempre foi com annotations, se eu não me engano já fiz isto que vc precisa e acho que ficou + ou - igual está abaixo…não lembro de cabeça…

mas como eu disse anterior, estou postando pra vc com annotations, talvez sirva, talvez não…
só um detalhe, como vc disse que precisa de ligar os dois cvCOdEnd, acrescentei na frente de cada um no exemplo abaixo o nome da classe só pra diferenciar, pois no annotations ele não deixa fazer com atributos com mesmo nome ok…mas é isso ai…

public class Pessoa(){
	...

	@OneToOne(mappedBy="cvCOdEnd_Pessoa")	
	@Cascade(CascadeType.ALL)
	private Endereco endereco;
	
   //getters e setters	

}

public class Endereco(){
	...

	@OneToOne
	@JoinColumn(name="cvCOdEnd_Endereco")
	private Pessoa pessoa;

  //getters e setters	
	

}

se não servir…fica ai a intenção…
flw, Hewerton

Rafael_Carneiro

Uma Pessoa precisa saber qual é o seu Endereco, mas um Endereco não precisa saber qual é a sua Pessoa. Logo esse relacionamento seria unidirecional, de Pessoa para Endereço.

Não precisa anotar a entidade Pessoa em Endereco.

paulo.ubuntu

Aeeee galeraaaa
valeeeeeeeeeeeeeeeu
Funfouuuuu =)

Brigadão ae a todos

Feliz Natal

Criado 25 de dezembro de 2007
Ultima resposta 26 de dez. de 2007
Respostas 4
Participantes 3