Я нашел лучшее решение. Я положу это здесь на случай, если кто-нибудь в будущем будет искать это.
Я использую свой собственный SessionCustomizer. В котором у меня есть:
public void customize(Session session) throws Exception {
DatabaseLogin login = session.getLogin();
Connector connector = login.getConnector();
login.setConnector(new ConnectorWrapper(connector, m_onCreationQuery));
}
Итак, есть мой собственный ConnectorWrapper, который, в свою очередь, оборачивает оригинальный Connector и при создании Connection использует оригинальный для его создания, затем вызывает SQL-запрос и возвращает его.