Tenho duas classes, uma Cliente e outra Compra, elas são as seguintes
Tenho duas classes, uma Cliente e outra Compra, elas são as seguintes
Olá Tibério, tudo bem com você?
Na plataforma, temos um curso de JPA focado nesses relacionamentos, assim como sua continuação. O ideal é que você termine a Formação Java e depois continue para Formação Spring da qual esse curso faz parte.
Mas é possível (porém, não aconselhável) fazer o curso sem atender os pré-requisitos. O problema de explicar por aqui é que existem algumas configurações e diversos outros detalhes que são necessários para que o mapeamento das classes para entidades JPA ocorram sem problemas. Para quebrar o galho, duas classes que serão usadas durante os cursos que eu mencionei, tem o relacionamento que você descreveu.
Então, da mesma forma que (no seu caso) "um Cliente pode ter muitas Compras e uma Compra pode ter apenas um Cliente associado a ela", no exemplo usado no curso "uma Conta pode ter muitas Movimentações e uma Movimentação pode ter apenas uma Conta associado a ela".
Classe da Movimentacao:
@Entity --> Anotação que declara que essa classe é uma entidade JPA
public class Movimentacao {
@Id --> Indica o atributo que será a chave primária da tabela
@GeneratedValue(strategy = GenerationType.IDENTITY) --> Indica que é o banco de dados quem vai atribuir o valor da chave primária
private Long id;
@Enumerated(EnumType.STRING) --> Indica que esse Enum será salvo em formato de String na tabela
private TipoMovimentacao tipoMovimentacao;
private LocalDateTime data;
private String descricao;
private BigDecimal valor;
@ManyToOne --> Indica que o relacionamento entre a Movimentacao e a Conta é de MuitosParaUm ( * , 1 )
private Conta conta;
//Getters e Setters dos atributos privados omitidos
}
Classe da Conta:
@Entity
public class Conta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titular;
private Integer agencia;
private Integer numero;
private Double saldo;
@OneToMany(mappedBy = "conta") --> Indica que o relacionamento entre a Conta e a Movimentacao é de UmParaMuitos ( 1 , * ), além de marcar o relacionamento como bidirecional (é um assunto complicado, então recomendo pesquisar)
private List<Movimentacao> movimentacoes;
//Getters e Setters dos atributos privados omitidos
}
Fez sentido? Qualquer coisa é só avisar! Forte abraço e bons estudos!!
Acho que entendi... então o relacionamento entre, no meu caso, Cliente e Compra se daria assim?
No Cliente.java :
@OneToMany(mappedBy = "cliente")
private List<Compra> compra;
E no Compra.java :
@ManyToOne
private Cliente cliente;
Certo?