Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como poderia retornar todas as movimentações que uma conta teve?

Estou fazendo o exemplo da aula, e estou tendo uma dúvida: Como poderia retornar todas as movimentações que uma conta teve?

Como conta não tem uma lista de movimentação, estou perdido como poderia fazer isso... Se eu colocasse em Conta uma Lista com ManyToOne, ele vai criar uma tabela só para fazer esse relacionamento, sendo que no caso, não seria preciso.

Como posso fazer?

4 respostas
solução!

Bom dia Brenno,

Realmente por padrão se fizer esse relacionamento bidirecional teremos uma tabela no meio fazendo essa ligação, pois para a JPA estamos montando dois relacionamentos, quando na verdade sabemos que esses dois ( @ManyToOne e @OnetoMany) é uma relacionamento só(porém bidirecional). Por isso devemos avisar isso a JPA.

Para isso vamos até o lado mais fraco da relação (aquele que vai enviar a pk como fk pra outra tabela, no caso, a Conta recebe a representante da FK de Movimentação, neste relacionamento temos que colocar o atributo mappedBy:

class Movimentacao {
    @ManyToOne
    private Conta conta;
}
class Conta {
    @OneToMany(mappedBy="conta")
    private List<Movimentacao> movimentacoes;
}

Dentro do mappedBy você passa o nome do atributo da classe Movimentacao, no caso conta.

Guilherme,

Como diriam... Isso funcionou "like a charm"!

Muito bom, obrigado! Você saberia me dizer o que ele faz com o mappedBy? Como funciona isso?

Que bom Brenno, o mappedBy serve para você avisar a JPA para usar o mesmo mapeamento que fez lá em conta, ao invés dela criar outro

Guilherme, eu estava reparando no banco, e dessa forma o sistema permite eu criar uma movimentação sem conta, sendo que não deveria. O que devo fazer? Precisaria somente setar um "nullable=false"