Я посмотрел на некоторые go-коды на github и объединил их тестовые данные / векторы в следующий код quaternion_test.go github quarternion test code
Я сделал что-то вроде этого с помощью Spring AOP, таким образом, я мог захватить sql, параметры, ошибки, и время выполнения для любого запроса, выполненного в приложении, было ли это HQL, Критериями или собственным SQL.
Это очевидно хрупко, небезопасно согласно разрыву с изменениями в, в спящем режиме, и т.д., но он иллюстрирует, что возможно получить SQL:
CriteriaImpl c = (CriteriaImpl)query;
SessionImpl s = (SessionImpl)c.getSession();
SessionFactoryImplementor factory = (SessionFactoryImplementor)s.getSessionFactory();
String[] implementors = factory.getImplementors( c.getEntityOrClassName() );
CriteriaLoader loader = new CriteriaLoader((OuterJoinLoadable)factory.getEntityPersister(implementors[0]),
factory, c, implementors[0], s.getEnabledFilters());
Field f = OuterJoinLoader.class.getDeclaredField("sql");
f.setAccessible(true);
String sql = (String)f.get(loader);
Переносят всю вещь в попытку/выгоду и использование на Ваш собственный риск.