Configurar beans para usar com Hibernate

2 respostas
V

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

@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;
	}
}

Pessoa

@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;
	}

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?

2 Respostas

zoren

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

Coloca o erro ai

V

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:

<form action="salao.adiciona.logic" method="POST">
    Nome:       <input type="text" name="salao.nome" /><br/>
    Descricao: <input type="text" name="salao.descricao" /><br/>
    Bairro:      <input type="text" name="salao.endereco.bairro" /><br/>
    Rua:         <input type="text" name="salao.endereco.rua" /><br/>
                    <input type="submit" />
</form>

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:

Criado 20 de setembro de 2009
Ultima resposta 20 de set. de 2009
Respostas 2
Participantes 2