У меня есть приложение, которое использует Toplink для персистентности и базы данных Oracle. Недавно у меня были проблемы с производительностью, особенно на уровне БД / запросов. У меня есть большой кусок логики в связке триггеров и хранимых процедур, плохо написанных, с обходными путями для проблемы мутации триггера. Приложение находится в производстве уже несколько лет, и переписывает этот код как последнее решение, учитывая бюрократию получения одобрения для новой версии и другие более высокие приоритеты. Поэтому я ищу быстрое решение.
Одним из решений для повышения производительности является использование переменных связывания. Моя проблема заключается в том, что после добавления bind-all-variable и cache-all-операторов в sessions.xml в toplink на определенном пользовательском интерфейсе, который запускает дрянной код и прекрасно работает перед внесением изменений в конфигурацию, я получаю эту ошибку:
ORA-00036: максимальное количество рекурсивных уровней SQL (50) превышено
Мои вопросы: почему эта ошибка отображается только после того, как я добавил параметр bind-variable? Что я могу сделать, чтобы он работал с переменными связывания, не меняя дерьмовый код?