Как добраться, SQL от В спящем режиме Критерии API (*not* для входа)

Я посмотрел на некоторые go-коды на github и объединил их тестовые данные / векторы в следующий код quaternion_test.go github quarternion test code

65
задан PeeHaa 24 November 2013 в 01:54
поделиться

1 ответ

Я сделал что-то вроде этого с помощью 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);

Переносят всю вещь в попытку/выгоду и использование на Ваш собственный риск.

38
ответ дан Brian Deterling 24 November 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: