[RESOLVIDO]Hibernate dúvida de Iniciante

1 resposta
Cledsonjr

Bom dia meu povo.
Estou estudando o Hibernate e surgiu algumas dúvidas.
Para demonstrar melhor a dúvida irei colocar o Modelo Conceitual e Lógico do meu banco.

Conceitual:

[img]http://desmond.imageshack.us/Himg521/scaled.php?server=521&filename=conceitual.jpg&res=landing[/img]

Lógico:
[img]http://desmond.imageshack.us/Himg339/scaled.php?server=339&filename=logico.jpg&res=landing[/img]

Então para uma melhor armazenamento(evitar campos nulos dentre outros motivos) dos dados será criado três tabelas: Escola, Composicao, EscolaPossuiComposicao. Minha dúvida surge aqui. Como irei mapear essas classes? Tenho apenas duas classes Escola e Composicao. A anotação de Escola para Composicao é ( 1...n) ou seja @OneToMany agora de Composicao para Escola é (0...n) e não sei como fazer.
Na verdade já baixei alguns tutoriais e mesmo assim não fiz o mapeamento correto entre relacionamento de Classes. :(
Se alguém puder mostrar como fica essa mapeamento ficaria muito grato :D , pois com um exemplo real para mim fica mais fácil de compreender como usar.

Segue abaixo as classes Escola e Composicao:

Escola.java

package br.com.matricula.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Escola {

	@Id
    @GeneratedValue
    @Column(name="id_escola") 
	private long idescola;
	private String nomeEscola;
	private int inep;
	private String Diretor;
	

	public long getIdescola() {
		return idescola;
	}
	public void setIdescola(long idescola) {
		this.idescola = idescola;
	}

	public String getNomeEscola() {
		return nomeEscola;
	}
	public void setNomeEscola(String nomeEscola) {
		this.nomeEscola = nomeEscola;
	}
	public int getInep() {
		return inep;
	}
	public void setInep(int inep) {
		this.inep = inep;
	}
	public String getDiretor() {
		return Diretor;
	}
	public void setDiretor(String diretor) {
		Diretor = diretor;
	}

	
	
}

Composicao.java

package br.com.matricula.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Composicao {

	@Id
    @GeneratedValue 
	private long codigo;
	private String composicao;
	
	public long getCodigo() {
		return codigo;
	}
	public void setCodigo(long codigo) {
		this.codigo = codigo;
	}
	public String getComposicao() {
		return composicao;
	}
	public void setComposicao(String composicao) {
		this.composicao = composicao;
	}
	
}

1 Resposta

drsmachado

Existem anotações que visam resolver poblemas com associações.
São elas:
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany

Para que você possa referenciar uma relação N : N, como é o caso, você precisa que:

  • A classe Escola possua uma coleção de Composicao
  • A classe Composicao possua uma coleção de Escola

E, então, usar a anotação @ManyToMany para definir o relacionamento e os demais detalhes da mesma (como joinTable, por exemplo).

Criado 25 de julho de 2012
Ultima resposta 25 de jul. de 2012
Respostas 1
Participantes 2