Configurar beans para usar com Hibernate

Ola pessoal, mais uma vez preciso da ajuda de vcs.

Eu estou fazendo um prejeto web, que será um guia de saloes de festas. Onde terei cadastro de usuarios e saloes (e todas as outras logicas de negocio para os dois).
Meu problema está no Hibernate! Eu preciso criar os relacionamentos das classes com ele, e nao estou conseguindo.
Ex.:
Possuo uma classe Salao, uma classe Pessoa e uma classe Endereco. Eu preciso relaciona-las da seguinte forma:

|salao| 1 ----------------- 1 |endereco|
|salao| * ----------------- 1 |pessoa| --> no caso o dono do salao
|pessoa| 1 --------------- 1 |endereco|

Os meus Beans estao da seguinte forma:

Salao

[code]@Entity
@Table(name = “salao”)
@SequenceGenerator(name = “sequencia_salao”, sequenceName = “salao_id”)
public class Salao implements Serializable {

private Long 		id;
private String 		nome;
private int 		cnpj;
private int 		ambientes;
private String 		email;
private int 		capacidade;
private Long 		telefone;
private double 	dimensao;
private int 		banheiros;
private double 	valor;
private Endereco 	endereco;
private Pessoa 	    pessoa;

@Id
@GeneratedValue
public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}

@Column(updatable = true, name = "salao_nome", nullable = true, length = 50)
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public int getCnpj() {
	return cnpj;
}
public void setCnpj(int cnpj) {
	this.cnpj = cnpj;
}
public int getAmbientes() {
	return ambientes;
}
public void setAmbientes(int ambientes) {
	this.ambientes = ambientes;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public int getCapacidade() {
	return capacidade;
}
public void setCapacidade(int capacidade) {
	this.capacidade = capacidade;
}
public Long getTelefone() {
	return telefone;
}
public void setTelefone(Long telefone) {
	this.telefone = telefone;
}
public double getDimensao() {
	return dimensao;
}
public void setDimensao(double dimensao) {
	this.dimensao = dimensao;
}
public int getBanheiros() {
	return banheiros;
}
public void setBanheiros(int banheiros) {
	this.banheiros = banheiros;
}
public double getValor() {
	return valor;
}
public void setValor(double valor) {
	this.valor = valor;
}

public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="endereco_id", updatable = true)
public Endereco getEndereco() {
	return endereco;
}
public void setPessoa(Pessoa pessoa) {
	this.pessoa = pessoa;
}

@ManyToOne
@JoinColumn(name = "pessoa_id")
public Pessoa getPessoa() {
	return this.pessoa;
}

}
[/code]

Pessoa

[code]@Entity
@Table(name = “pessoa”)
@SequenceGenerator(name = “sequencia_pessoa”, sequenceName = “pessoa_id”)
public class Pessoa implements Serializable {

private Long 		id;
private String 		nome;
private int 		cpf;
private int 		rg;
private String 		email;
private Long 		telefone;
private String 		senha;
private Endereco 	endereco;

@Id
@GeneratedValue
public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}

@Column(updatable = true, name = "pessoa_nome", nullable = false, length = 50)
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public int getCpf() {
	return cpf;
}
public void setCpf(int cpf) {
	this.cpf = cpf;
}
public int getRg() {
	return rg;
}
public void setRg(int rg) {
	this.rg = rg;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public Long getTelefone() {
	return telefone;
}
public void setTelefone(Long telefone) {
	this.telefone = telefone;
}

public String getSenha() {
	return senha;
}
public void setSenha(String senha) {
	this.senha = senha;
}

public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="endereco_id", updatable = true)
public Endereco getEndereco() {
	return endereco;
}

[/code]

e Endereco

@Entity
@Table(name="endereco")
@SequenceGenerator(name = "sequencia_end", sequenceName = "sequencia_end_id")
public class Endereco implements Serializable {
	
	private Long 	id;
	private String	estado;
	private String	municipio;
	private String 	bairro;
	private String	rua;
	private int	numero;
	private String 	complemento;
	private int	cep;
	private Pessoa 	pessoa;
	private Salao  salao;
	
	public Endereco() {
		
	}
	
	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	
	@Column(updatable = true, name = "estado", nullable = false, length = 50)
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	@Column(updatable = true, name = "municipio", nullable = false, length = 50)
	public String getMunicipio() {
		return municipio;
	}
	public void setMunicipio(String municipio) {
		this.municipio = municipio;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	public String getComplemento() {
		return complemento;
	}
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public int getCep() {
		return cep;
	}
	public void setCep(int cep) {
		this.cep = cep;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	@OneToOne(mappedBy = "endereco")
	public Pessoa getPessoa() {
		return this.pessoa;
	}

	public void setSalao(Salao salao) {
		this.salao = salao;
	}
	
	@OneToOne(mappedBy = "endereco")
	public Salao getSalao() {
		return this.salao;
	}

Quando eu acesso meu form e chamo a logica do vraptor2 para adicionar no banco gera um erro.
Vcs poderiam me dizer se existe algum erro de integridade nos beans acima?

Os nomes dos atributos das classes são os mesmos dos atributos das tabelas??

Coloca o erro ai

Sim. Os atributos das classes sao as colunas das tabelas!
Mas a minha duvida principal nao é essa e nem o erro.
O que eu preciso saber é como mapear os relacionamentos nas minhas classes beans.
E quando eu for chamar a logica do vraptor para adicionar um salao ou uma pessoa, como eu devo fazer? Pra cada salao que eu adicionar eu preciso que seja adicionado um endereco tbm e este seja associado ao salao. E o mesmo para pessoa.

No meu metodo adiciona da classe SalaoLogic, eu adiciono da seguinte forma:

public void adiciona (Salao salao) { this.daoFactory.beginTransaction(); //meu construtor recebe um DaoFactory com uma sessao aberta this.daoFactory.getSalaoDao().adiciona(salao); this.daoFactory.commit(); }

O meu jsp está assim:

[code]
Nome:

Descricao:

Bairro:

Rua:

[/code]

As perguntas sao: Como eu devo montar meus beans? Como eu devo chamar o meu metodo adiciona e como eu passo esses parametros no jsp?

Eu sei que as duvidas nao estao muito claras, mas ainda to iniciando e ta um pouco complicado de entender essa logica inteira…
:oops: