Hibernate Annotations mapeamento

1 resposta
pauloperes

Ola a todos,

Tenho uma classe Shelf, nela uma lista com seus Cards, onde um shelf pode ter uma ou mais cards. Na classe card tenho o atributo shelf, onde mapeio ele para a classe Shelf utlizando um ManytoOne, quando mando gerar a minha base é criado uma tabela associativa Shelf_Card. No momento de persistir os dados com uma instancia da classe Shelf em memoria seto suas placas e mando salvar o objeto Shelf, entao o relacionamento entre as duas classes é feito na tabela associativa, quero que seja salvo pk do shelf na tabela card, como eu faço isso? vejam os meus codigos:

@Entity
public class Shelf {

    @Id
    private String ip;

    @ManyToOne(fetch=FetchType.LAZY)
    private Shelf shelf;

    @Temporal(TemporalType.DATE)
    private Calendar dateInsert;

    @ManyToOne()
    private Model model;

    @ManyToOne
    private City city;

    @Column(nullable=false)
    private String name;
    
    
    @Column(length=30, nullable=false)
    private int vlan;


    @ManyToOne
    private Bras bras;

    @OneToMany(cascade=CascadeType.ALL)
    private List<Card> cards = new ArrayList<Card>();

Classe Card

@Entity
public class Card {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
      
    @ManyToOne()
    private Shelf shelf;

    @Column()
    private int slot;
        
    @Column(length=40)
    private String serial;

    @Column(length=200)
    private String name;

    @Column(nullable=true)
    private int cardTypeZhone;

    @Column(nullable=true)
    private int cardInterfaceType;

    @Column(nullable=true)
    private int cardLineType;
    
    @Column(nullable=true)
    private String swName;

    @Column(nullable=true)
    private String version;

    @Column(length=20)
    private String supplierBuilder;

    @Column(length=50)
    private String status;

att,

Paulo

1 Resposta

Cherubini

Eai , blz ?

entao cara pelo que vi, seus relacionamentos sao N - 1, entao nao precisaria de uma classe shelf_card, mais sim só o atributo na classe
manyoneto.

olha

class shelf

@OneToMany(mappedBy = "shelf", fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
private List<Card> cards = new ArrayList<Card>();

class card

@ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "id_shelf", insertable = true, updatable = true)
  private Shelf shelf;

bom pelo q entendi, é isso!

abraços

Criado 11 de agosto de 2009
Ultima resposta 11 de ago. de 2009
Respostas 1
Participantes 2