Dúvida ao gerar classes através de um banco de dados [hibernate JPA]

0 respostas
Z

Olá a todos,

Estou utilizando o recurso que gera as classes através de um banco de dados já existente (JPA Entities from Tables), contudo estou com uma dúvida em uma classe que o sistema está gerando.

Tenho o seguinte banco de dados

[img]http://img163.imageshack.us/img163/9456/duvidaguj.png[/img]

Ao tentar gerar as classes dessas tabelas o JPA gera 4 classes

Pedido.java

package com.guj.duvida.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the pedido database table.
 * 
 */
@Entity
@Table(name="pedido")
public class Pedido implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int idPedido;

	@Column(length=45)
	private String bairro_Entrega;

	@Column(length=45)
	private String endereco_Entrega;

	//bi-directional many-to-one association to ProdutoPedido
	@OneToMany(mappedBy="pedido")
	private List<ProdutoPedido> produtoPedidos;

    public Pedido() {
    }

	public int getIdPedido() {
		return this.idPedido;
	}

	public void setIdPedido(int idPedido) {
		this.idPedido = idPedido;
	}

	public String getBairro_Entrega() {
		return this.bairro_Entrega;
	}

	public void setBairro_Entrega(String bairro_Entrega) {
		this.bairro_Entrega = bairro_Entrega;
	}

	public String getEndereco_Entrega() {
		return this.endereco_Entrega;
	}

	public void setEndereco_Entrega(String endereco_Entrega) {
		this.endereco_Entrega = endereco_Entrega;
	}

	public List<ProdutoPedido> getProdutoPedidos() {
		return this.produtoPedidos;
	}

	public void setProdutoPedidos(List<ProdutoPedido> produtoPedidos) {
		this.produtoPedidos = produtoPedidos;
	}
	
}

Produto.java

package com.guj.duvida.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the produto database table.
 * 
 */
@Entity
@Table(name="produto")
public class Produto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int idProduto;

	@Column(nullable=false, length=45)
	private String nome;

	@Column(nullable=false, length=45)
	private String valor;

	//bi-directional many-to-one association to ProdutoPedido
	@OneToMany(mappedBy="produto")
	private List<ProdutoPedido> produtoPedidos;

    public Produto() {
    }

	public int getIdProduto() {
		return this.idProduto;
	}

	public void setIdProduto(int idProduto) {
		this.idProduto = idProduto;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getValor() {
		return this.valor;
	}

	public void setValor(String valor) {
		this.valor = valor;
	}

	public List<ProdutoPedido> getProdutoPedidos() {
		return this.produtoPedidos;
	}

	public void setProdutoPedidos(List<ProdutoPedido> produtoPedidos) {
		this.produtoPedidos = produtoPedidos;
	}
	
}
ProdutoPedido.java
package com.guj.duvida.model;

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;


/**
 * The persistent class for the produto_pedido database table.
 * 
 */
@Entity
@Table(name="produto_pedido")
public class ProdutoPedido implements Serializable {
	private static final long serialVersionUID = 1L;

	@EmbeddedId
	private ProdutoPedidoPK id;

	@Column(length=45)
	private String observacao;

	@Column(nullable=false, precision=10, scale=2)
	private BigDecimal quantidade;

	//bi-directional many-to-one association to Produto
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="Produto_idProduto", nullable=false, insertable=false, updatable=false)
	private Produto produto;

	//bi-directional many-to-one association to Pedido
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="Pedido_idPedido", nullable=false, insertable=false, updatable=false)
	private Pedido pedido;

    public ProdutoPedido() {
    }

	public ProdutoPedidoPK getId() {
		return this.id;
	}

	public void setId(ProdutoPedidoPK id) {
		this.id = id;
	}
	
	public String getObservacao() {
		return this.observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public BigDecimal getQuantidade() {
		return this.quantidade;
	}

	public void setQuantidade(BigDecimal quantidade) {
		this.quantidade = quantidade;
	}

	public Produto getProduto() {
		return this.produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}
	
	public Pedido getPedido() {
		return this.pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}
	
}

Até aqui nenhum mistério, mas ele gera uma outra classe também:

ProdutoPedidoPK.java

package com.guj.duvida.model;

import java.io.Serializable;
import javax.persistence.*;

/**
 * The primary key class for the produto_pedido database table.
 * 
 */
@Embeddable
public class ProdutoPedidoPK implements Serializable {
	//default serial version id, required for serializable classes.
	private static final long serialVersionUID = 1L;

	@Column(unique=true, nullable=false)
	private int produto_idProduto;

	@Column(unique=true, nullable=false)
	private int pedido_idPedido;

    public ProdutoPedidoPK() {
    }
	public int getProduto_idProduto() {
		return this.produto_idProduto;
	}
	public void setProduto_idProduto(int produto_idProduto) {
		this.produto_idProduto = produto_idProduto;
	}
	public int getPedido_idPedido() {
		return this.pedido_idPedido;
	}
	public void setPedido_idPedido(int pedido_idPedido) {
		this.pedido_idPedido = pedido_idPedido;
	}

	public boolean equals(Object other) {
		if (this == other) {
			return true;
		}
		if (!(other instanceof ProdutoPedidoPK)) {
			return false;
		}
		ProdutoPedidoPK castOther = (ProdutoPedidoPK)other;
		return 
			(this.produto_idProduto == castOther.produto_idProduto)
			&& (this.pedido_idPedido == castOther.pedido_idPedido);

    }
    
	public int hashCode() {
		final int prime = 31;
		int hash = 17;
		hash = hash * prime + this.produto_idProduto;
		hash = hash * prime + this.pedido_idPedido;
		
		return hash;
    }
}

Por que isso é necessário? Não consegui entender o motivo dele gerar essa outra classe.
Estou fazendo algo errado ou é isso mesmo?

Muito obrigado desde já pelas resposta!!!

Criado 7 de setembro de 2012
Respostas 0
Participantes 1