Fala feras 
Tenho as entidades Associacao, Usuario, Talao e elas se relacionamento da seguinte forma:
1 Usuario - N Associacao
1 Associacao - 1 Talao
Existem 3 tipos de usuário e cada usuário, pode ter alguns determinados registros na tabela associação…por causa disso, criei o seguinte mapeamento:
UsuarioTO
@OneToMany(mappedBy="usuarioCadastro", fetch=FetchType.LAZY)
private Collection<AssociacaoTO> associacoesCadastro;
@OneToMany(mappedBy="usuarioSupervisor", fetch=FetchType.LAZY)
private Collection<AssociacaoTO> associacoesSupervisor;
@OneToMany(mappedBy="usuarioOperador", fetch=FetchType.LAZY)
private Collection<AssociacaoTO> associacoesOperador;
AssociacaoTO
@ManyToOne()
@JoinColumn(name="ID_USUARIO_CADASTRO")
private UsuarioTO usuarioCadastro;
@ManyToOne()
@JoinColumn(name="ID_USUARIO_OPERADOR")
private UsuarioTO usuarioOperador;
@ManyToOne()
@JoinColumn(name="ID_USUARIO_SUPERVISOR")
private UsuarioTO usuarioSupervisor;
@OneToOne()
@JoinColumn(name="ID_TALAO")
private TalaoTO talaoTO;
TalaoTO
@OneToOne(mappedBy = "talaoTO", fetch=FetchType.LAZY)
@Cascade(value = {CascadeType.PERSIST})
private AssociacaoTO associacaoTO;
O problema é que quando vou buscar um registro de associacao por um determinado parâmetro ( ex.: por mês ), ele retorna em torno de 6 a 7 mil registro e para cada registro, ele começa a buscar todos os relacionamentos e isso esta tornando o sistema inviável para utilização.
Um método que demora demais, é o seguinte:
AssociacaoDAOImpl
public Collection<AssociacaoTO> buscarRegistrosMesVenda(String mesAno) {
Collection<AssociacaoTO> taloesVendidos = new ArrayList<AssociacaoTO>();
session = InitSessionFactory.getInstance().getCurrentSession();
Transaction tx = session.beginTransaction();
StringBuilder sql = new StringBuilder("SELECT * FROM associacao WHERE LEFT(ASSOCIACAO.DT_DEVOLUCAO_SUPERVISOR, 7) = '" + mesAno + "'");
Query query = session.createSQLQuery(sql.toString()).addEntity(AssociacaoTO.class);
taloesVendidos = query.list();
tx.commit();
return taloesVendidos;
}
Qual a melhor maneira de ajustar isso? Se eu remover os relacionamentos, funciona mas ai teria que mudar toda a implementação feita até hoje. Tem alguma outra opção?
PS.: O principal relacionamento problematico é esse 1-1.
Obrigado.