API Kriteria Hibernate ialah alat yang berkuasa untuk menyatakan pertanyaan kompleks dalam format yang mudah difahami. Walau bagaimanapun, ia tidak menyediakan cara langsung untuk mendapatkan semula SQL yang dilaksanakan sebenar. Ini boleh menjadi masalah apabila anda memerlukan akses kepada pertanyaan SQL yang tepat untuk penyahpepijatan atau penyepaduan dengan sistem luaran yang memerlukan SQL mentah.
Untuk menyelesaikan masalah ini, anda boleh mendapatkan SQL asas daripada Kriteria Hibernate menggunakan:
<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>
Kod ini:
Kaedah ini memberi anda akses kepada pertanyaan SQL yang Kriteria Hibernate akan laksanakan, membolehkan anda menyelesaikan masalah, nyahpepijat log atau menyepadukan dengan sistem luaran yang memerlukan SQL mentah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kembali Pertanyaan SQL Dasar daripada Objek Kriteria Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!