Como fazer chave estrangeira no hibernate?

11 respostas
V

Oi GUJ,
pessoal, é o seguinte, tenho uma classe Classe Lote que tem um produto, como composição.

@Entity
public class Produto {
    @Id
    @GeneratedValue
    private Long id;
    private String nome;
    private String descricao;
    private double preco;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar dataInicioVenda;

Essa é a classe Produto, como eu posso fazer que a classe Lote tenha este objeto produto ? (e como ficaria no annotations, claro).

11 Respostas

D

nas annotations voce coloca o tipo da relação
@OneToMany@MappedBy
@ManyToOne
@ManyToMany

acho que é isso mesmo, ainda não trabalhei muito a fundo com hibernate :stuck_out_tongue_winking_eye:

D

Ah, e por exemplo, se um lote pode ter muitos produtos, pode ficar assim, na classe lote, voce tem um List e coloca a relação @OneToMany :stuck_out_tongue:

A

Olá,

Teste:

public class Lote{

@ManyToOne
private List<Produto> produto;

//getters e setters

}

Puxa, me confundí, é @OneToMany hehehe... É um Lote para muitos Produtos, certo?

V

Galera, hora que eu fizer o insert, update ou delete, ele já fará em cascata também ?

D

Cara, igual eu falei, não trabalhei muito com Hibernate, então posso estar errado, mas eu acho que depende de como você configurou o cascade do hibernate… essa parte de configuração mesmo só sei fazer por xml, não sei onde coloca isso nas annotations

V

Tranquilo cara, obrigado pela resposta.

A
andredecotia:
Olá,

Teste:

public class Lote{

@ManyToOne
private List<Produto> produto;

//getters e setters

}

Puxa, me confundí, é @OneToMany hehehe... É um Lote para muitos Produtos, certo?

?

A

Acredito que desta forma ao deletar um Lote irá remover junto sua lista de Produtos. Veja:

public class Lote{

@OneToMany(cascade = CascadeType.ALL)
List<Produto> produtos;

//getters e setters
}
V
andredecotia:
Acredito que desta forma ao deletar um Lote irá remover junto sua lista de Produtos. Veja:
public class Lote{

@OneToMany(cascade = CascadeType.ALL)
List<Produto> produtos;

//getters e setters
}

Um lote tem um produto só cara.
Vou testar o que me passou.

V

Funcionou cara, agora só falta ver se ao apagar um lote ele apagará os produtos tbm,rs.

V

Para inserir ele tah inserindo corretamente, mas para deletar não.
Ele deixa o produto no banco…

Criado 1 de março de 2011
Ultima resposta 1 de mar. de 2011
Respostas 11
Participantes 3