Как лучше всего установить пользовательскую переменную MySQL в веб-приложении Java, Spring MVC, Hibernate с аннотациями?

Мне нужно установить пользовательскую переменную MySQL, которая используется в триггере в веб-приложении Spring MVC Hibernate. Эта пользовательская переменная используется в триггерах MySQL для таблиц, которыми управляет Hibernate. Мне нужно, чтобы эта пользовательская переменная была правильно установлена ​​во время всех обращений Hibernate для записи в базу данных.

К сожалению, в HQL нет метода для установки пользовательских переменных MySQL, и метод, который я нашел для прямого выполнения MySQL, похоже, не работает с перевод. Поскольку продолжительность жизни пользовательской переменной - это время жизни соединения с базой данных, мне нужно, чтобы MySQL выполнялся с использованием того же соединения, с которым будет выполняться HQL. Однако мои транзакции, похоже, запускают HQL после выполнения собственного MySQL, и, следовательно, ожидаемая пользовательская переменная отсутствует для триггера MySQL.

Для выполнения собственных запросов MySQL я использовал:

HibernateEntityManager em=(HibernateEntityManager) getEntityManager();
Connection connection=em.getSession().connection();
Statement s = connection.createStatement();
s.executeUpdate("SET @current_user_id="+userId);

Когда Spring MVC фиксирует мою транзакцию, он запускает запросы HQL и затем выдает исключение, потому что @current_user_id вызывает сбой триггера MySQL. Я проверил это, проверив отсутствие триггеров.

1
задан Bernard Igiri 8 October 2010 в 15:46
поделиться