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

Lazy, Eager e relacionamentos fracos

Fala pessoal! Uma dúvida que surgiu agora à noite baseado no exemplo de Conta e Movimentacao. Dado que o relacionamento Conta e Movimentação é de propriedade da classe Movimentacao:

@Entity
public class Conta {

    @OneToMany(mappedBy="conta")
    private List<Movimentacao> movimentacoes;

}
@Entity
public class Movimentacao {

    @ManyToOne
    private Conta conta;

}

não importa se eu informar Eager como FetchType no membro movimentacoes da classe Conta, todas os acessos a essa lista serão feitos como Lazy, a não ser que eu utilize JPQL com join fetch.

Isso vale para todo relacionamento @*Many cuja classe do atributo não seja a proprietária do relacionamento?

2 respostas
solução!

Bom dia Italo, não está tendo comportamento Fetch quando usa FetchType.EAGER ??

Boa noite, erro meu, você tem razão. Devo ter feito confusão com as consultas. A única observação útil mesmo é que o comportamento de certos relacionamentos configurados por meio de anotações podem ser sobrescritos pelos operadores que você utilizar em uma JPQL.

Por exemplo, um relacionamento anotado como obrigatório entre duas classe, onde se você realizar a consulta via EntityManager irá gerar um SQL com inner join, enquanto que se eu utilizar JPQL com left join fetch eu acabo com uma consulta com left outer join.