With the current upward trend in semantically annotated data, ontology-based data access (OBDA) was formulated to tackle the problem of data integration and query answering, where an ontology is formalized as a description logic TBox. In order to meet usability requirements set by users, efforts have been made to equip OBDA system with explanation facilities. One important explanation tool for DL ontologies, referred to as query abduction, can be formalised as abductive reasoning. In particular, given an ontology and an observation (i.e., a query with an answer), an explanation to the observation is a set of facts that together with the ontology can entail the observation. In this paper, we develop a sound and complete algorithm of query abduction for general conjunctive queries in ELH ontologies. This is achieved through ontology approximation and query rewriting. We implemented a prototypical system using the highly optimized Prolog engine XSB. We evaluated our algorithm over university benchmark ontology and our experimental results show that the system is capable of handling query abduction problems for ontology that has approximately 10 millions ABox assertions.