L'API Hibernate Criteria est un outil puissant pour exprimer des requêtes complexes dans un format facile à comprendre. Cependant, il ne fournit pas de moyen direct de récupérer le SQL réellement exécuté. Cela peut poser un problème lorsque vous avez besoin d'accéder à des requêtes SQL précises pour le débogage ou l'intégration avec des systèmes externes nécessitant du SQL brut.
Pour résoudre ce problème, vous pouvez obtenir le SQL sous-jacent à partir des critères Hibernate en utilisant :
<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>
Ce code :
Cette méthode vous donne accès aux requêtes SQL qu'Hibernate Criteria exécutera, vous permettant de résoudre les problèmes, de déboguer les journaux ou d'intégrer des systèmes externes nécessitant du SQL brut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!