Maison >base de données >tutoriel mysql >Comment puis-je récupérer la requête SQL à partir d'une API Hibernate Criteria ?
Récupérer SQL depuis l'API Hibernate Criteria : une alternative
Bien que la méthode toSql()
n'existe pas dans l'API Criteria, il existe une autre approche que vous pouvez adopter pour obtenir le SQL représentant la requête.
Personnaliser les critères pour extraire SQL
Pour extraire le SQL, vous devez accéder à la représentation interne de l'objet critère. Cela comprend :
CriteriaImpl
. CriteriaImpl
de SessionImplementor
. SessionImplementor
de SessionFactoryImplementor
. CriteriaQueryTranslator
en fonction des paramètres d'entrée. CriteriaJoinWalker
avec les paramètres nécessaires. Générer SQL
Une fois que vous avez CriteriaJoinWalker
, vous pouvez appeler la méthode getSQLString()
pour obtenir la représentation SQL de la requête.
Exemple de code
L'exemple suivant illustre les étapes ci-dessus :
<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 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!