Como mapear essa situação?

4 respostas
Nicolas_Fernandes

E aí, galerinha do GUJ!
Tudo bem?

Tô com um problema pra mapear uma situação, gostaria da ajuda de vocês. Tenho as seguintes tabelas:
CREATE TABLE CARDAPIOS (
ID BIGINT NOT NULL PRIMARY KEY,
//...);

CREATE TABLE PRODUTOS (
ID BIGINT NOT NULL...
//...);

CREATE TABLE PRODUTOSCARDAPIOS (
CARDAPIO BIGINT NOT NULL,
PRODUTO BIGINT NOT NULL,
QUANTIDADE INTEGER NOT NULL,
FOREIGN KEY (CARDAPIO) REFERENCES CARDAPIOS(ID),
FOREIGN KEY (PRODUTO) REFERENCES PRODUTOS(ID),
PRIMARY KEY (CARDAPIO, PRODUTO));
Essa é minha situação. Eu mapeei as classes da seguinte maneira:
@Entity
@Table(name = "cardapio", schema = "dbo")
@SequenceGenerator(initialValue=1, name="s", sequenceName="dbo.seq_cardapio")
public class Cardapio implements Serializable {
    
    @Id
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    @GeneratedValue(generator="s", strategy=GenerationType.SEQUENCE)
    private Long ID;
    @Basic(optional = false)
    @Column(name = "descricao", nullable = false, length = 100)
    private String descricao;
    @Basic(optional = false)
    @Column(name = "preco", nullable = false)
    private double preco;

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="dbo.cardapioprodutos",
    joinColumns= { @JoinColumn(name="cardapio")},
            inverseJoinColumns={@JoinColumn(name="produto")}
    )
    private List<Produto> produtos;
}


@Entity
@Table(name = "produtos", schema = "dbo")
public class Produto implements Serializable {
    
    @Id
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Long ID;
    
    @Basic(optional = false)
    @Column(name = "nome", nullable = false, length = 50)
    private String nome;

    //...
}
O meu problema tá na coluna QUANTIDADE da tabela PRODUTOSCARDAPIOS. Onde eu devo colocar esse campo? Em qual entidade? Podem me dar uma força, galera?

Grande abraço a todos,
fiquem com Deus! :D

4 Respostas

romarcio

Você vai ter que criar uma classe PRODUTOSCARDAPIOS, já que sua tabela possui mais informações além das chaves estrangeiras que formam a tabela de relacionamento N-N.

Nicolas_Fernandes

Valeu pela resposta, romarcio.
Sim, entendi a ideia, mas como ficaria, então?
Seria uma anotação @ManyToMany para a classe CardapioProduto?
O que conteria na classe? Só a quantidade ou objetos também que representem o Cardapio e o Produto?
Pode me dar uma força?

Valeu, grande abraço,
fique com Deus! :smiley:

javax.skol

Algo parecido…

romarcio

Encontrei esse link: http://dchohfi.com/2009/09/29/many-to-many-com-colunas-extras-hibernate-jpa/

Criado 20 de março de 2012
Ultima resposta 21 de mar. de 2012
Respostas 4
Participantes 3