我不知道生成的查询是什么意思,但如果你使用 Hibernate 并且你有javax.persistence.Query query
你可以很容易地获得 HQL 字符串(对于 EclipseLink 它是相似的)。如果你有 HQL,你可以用 QueryTranslator 将它翻译成 SQL。
// Get HQL
String hqlQueryString = query.unwrap(org.hibernate.query.Query.class).getQueryString();
// Translate HQL to SQL
ASTQueryTranslatorFactory queryTranslatorFactory = new ASTQueryTranslatorFactory();
SessionImplementor hibernateSession = em.unwrap(SessionImplementor.class);
QueryTranslator queryTranslator = queryTranslatorFactory.createQueryTranslator("", hqlQueryString, Collections.emptyMap(), hibernateSession.getFactory(), null);
queryTranslator.compile(Collections.emptyMap(), false);
String sqlQueryString = queryTranslator.getSQLString();