Estou com um problema em mapear o relacionamento de uma classe @OneToOne, já tentei diversas formas porém o Hibernate não cria corretamente o banco e não consegue fazer o relacionamento do jeito que preciso…
Resumidamente a estrutura é a seguinte:
Tenho as classes ProdutoBean, TamanhoBean, ProdutoTamanhoBean, PedidoBean e ItensPedidoBean.
Na classe ProdutoBean tenho uma lista de ProdutoTamanho, que são os tamanhos do produto, juntamente com seu valor.
Na classe TamanhoBean tenho uma lista com os Produtos que tem aquele tamanho.
Na classe ProdutoTamanhoBean, tenho um produto e um tamanho.
Na classe ItensPedidoBean tenho um PedidoBean e um ProdutoTamanhoBean, porém o Hibernate não cria a FK para a tabela ProdutoTamanho (que seria uma simples tabela N-N caso não houvesse preço diferenciado por produto e tamanho, por isso criei essa classe).
Alguém poderia ajudar ou dar um norte de como fazer o bendito Hibernate relacionar a classe ItensPedido com a ProdutoTamanho corretamente?
Ele simplesmente ignora e não cria coluna alguma…
Agradeço desde já.
edit: alterei para relação @ManyToOne e não sei diabos porque deu certo agora (já tinha feito antes de postar o tópico), mas deu… valeu!
Segue os códigos das classes.
Classe ProdutoBean
@Entity
@Table(name="Produtos")
public class ProdutoBean implements Serializable, Cloneable {
@Id
@GeneratedValue
private int codigo;
@Column(length=100, nullable=false)
private String nome;
@Column(length=255, nullable=true)
private String descricao;
@Temporal(value = TemporalType.TIMESTAMP)
private Date dataCadastro;
@ManyToMany
private List<CorBean> cores;
@OneToMany(mappedBy="produto")
private List<ProdutoTamanhoBean> tamanhos;
// getters e setters
}
Classe TamanhoBean
@Entity
@Table(name="Tamanhos")
public class TamanhoBean implements Serializable, Cloneable {
@Id
@GeneratedValue
private int codigo;
@Column(length=5, nullable=false)
private String descricao;
@OneToMany(mappedBy="tamanho")
private List<ProdutoTamanhoBean> produtos;
// getters e setters
}
Classe ProdutoTamanhoBean
@Entity
@Table(name="Produtos_Tamanhos")
public class ProdutoTamanhoBean implements Serializable, Cloneable {
@Id
@GeneratedValue
private int codigo;
@ManyToOne
@JoinColumn(name="Produto_codigo", nullable=false)
private ProdutoBean produto;
@ManyToOne
@JoinColumn(name="Tamanho_codigo", nullable=false)
private TamanhoBean tamanho;
@Column(nullable = false)
private double valor;
@Column(nullable = false)
private boolean selected;
// getters e setters
}
Classe PedidoBean
@Entity
@Table(name="Pedidos")
public class PedidoBean implements Serializable, Cloneable {
@Id
@GeneratedValue
private int codigo;
@Column(nullable=false)
private int qtdTotal;
@Column(nullable=false)
private double desconto;
@OneToOne
private ClienteBean cliente;
@OneToOne
private VendedorBean vendedor;
@OneToOne
private TransportadoraBean transportadora;
@OneToMany
private List<ItensPedidoBean> itens;
// getters e setters
}
Classe ItensPedidoBean
@Entity
@Table(name="Itens_Pedido")
public class ItensPedidoBean implements Serializable, Cloneable {
@Id
@GeneratedValue
private int codigo;
@OneToOne
private PedidoBean pedido;
@OneToOne
private ProdutoTamanhoBean produto;
@Column(nullable=false)
private int qtd;
@Column(nullable=false)
private double valor;
// getters e setters
}