Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Pertanyaan SQL daripada API Kriteria Hibernate?
Mengambil semula SQL daripada API Kriteria Hibernate: alternatif
Walaupun kaedah toSql()
tidak wujud dalam API Kriteria, terdapat pendekatan lain yang boleh anda ambil untuk mendapatkan SQL mewakili pertanyaan.
Sesuaikan Kriteria untuk mengekstrak SQL
Untuk mengekstrak SQL, anda perlu mengakses perwakilan dalaman objek kriteria. Ini termasuk:
CriteriaImpl
. CriteriaImpl
daripada SessionImplementor
. SessionImplementor
daripada SessionFactoryImplementor
. CriteriaQueryTranslator
berdasarkan parameter input. CriteriaJoinWalker
dengan parameter yang diperlukan. Jana SQL
Sebaik sahaja anda mempunyai CriteriaJoinWalker
, anda boleh memanggil kaedah getSQLString()
untuk mendapatkan perwakilan SQL pertanyaan.
Contoh Kod
Contoh berikut menunjukkan langkah di atas:
<code class="language-java">CriteriaImpl criteriaImpl = (CriteriaImpl) criteria; SessionImplementor session = criteriaImpl.getSession(); SessionFactoryImplementor factory = session.getFactory(); CriteriaQueryTranslator translator = new CriteriaQueryTranslator(factory, criteriaImpl, criteriaImpl.getEntityOrClassName(), CriteriaQueryTranslator.ROOT_SQL_ALIAS); String[] implementors = factory.getImplementors(criteriaImpl.getEntityOrClassName()); CriteriaJoinWalker walker = new CriteriaJoinWalker((OuterJoinLoadable) factory.getEntityPersister(implementors[0]), translator, factory, criteriaImpl, criteriaImpl.getEntityOrClassName(), session.getLoadQueryInfluencers()); String sql = walker.getSQLString();</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Pertanyaan SQL daripada API Kriteria Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!