Fala feras 
Tenho 2 métodos de busca.
@SuppressWarnings("unchecked")
public Collection<AssociacaoTO> buscarAssociacaoPorUsuario(Long id) {
Collection<AssociacaoTO> resultado;
session = InitSessionFactory.getInstance().getCurrentSession();
//Transaction tx = session.beginTransaction();
Query query = session.createQuery("from AssociacaoTO where usuarioCadastro.id = :idUsuarioCadastro or usuarioSupervisor.id = :idUsuarioSupervisor or usuarioOperador.id = :idUsuarioOperador");
query.setString("idUsuarioCadastro", String.valueOf(id));
query.setString("idUsuarioSupervisor", String.valueOf(id));
query.setString("idUsuarioOperador", String.valueOf(id));
resultado = query.list();
//tx.commit();
return resultado;
}
@SuppressWarnings("unchecked")
public Collection<UsuarioTO> buscarUsuarios(UsuarioTO param){
Collection<UsuarioTO> resultado = null;
session = InitSessionFactory.getInstance().getCurrentSession();
//session.beginTransaction();
Criteria criteria = session.createCriteria(UsuarioTO.class);
//criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
if(param.getNome() != null && !param.getNome().equalsIgnoreCase("")){
criteria.add(Expression.like("nome", param.getNome(), MatchMode.ANYWHERE));
}
if(param.getCpf() != null && !param.getCpf().equalsIgnoreCase("")){
criteria.add(Expression.ilike("cpf", "%" + param.getCpf() + "%"));
}
resultado = criteria.list();
return resultado;
}
Se eu acessar o segundo método diretamente, o Hibernate funciona numa boa. Mas se eu executar o fluxo onde primeiro eu utilizo o primeiro método e depois eu executo o segundo método, ele insiste em gerar uma query de insert na linha resultado = criteria.list(). Alguém sabe pq acontece isso?
Abs