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