Tenho essas duas entidades que se relacionam através do campo email por motivos da regra de negócio desse sistema.
Faço uma pesquisa (no console mostra que essa pesquisa possui um left outer join com Contato) entre ContatoDBM e Contato, e é aí que acontece algo estranho, para todos os registros que retornam null em Contato, o hibernate faz uma pesquisa especial, ou seja, ele gera mais um código SQL só pra aquele caso, o problema é que pode ser 1 caso ou milhares de casos, e isso deixa o processo muito lento.
Alguém sabe porque isso ocorre ou como devo proceder para resolver isso?
Código de pesquisa:
Criteria c = session.createCriteria(ContatoDBM.class);
c.add(Restrictions.in("codCliente", idsPesquisa));
return c.list();
public class ContatoDBM {
@Id @Column(name="cod_cliente")
private Long codCliente;
private String nome;
private String apelido;
private String email;
@JoinColumn(name="email", referencedColumnName="email", insertable=false, updatable=false, nullable=true)
@ManyToOne(fetch=FetchType.EAGER, optional=true)
private Contato contato;
public class Contato implements Serializable{
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String nome;
private String email;