| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate+HQL+delete |
| Автор: vzf 14.2.2007, 15:51 | ||||||||
| Помогите пожалуйста решить проблему. Есть класс JobLog соответствующий таблице JOBLOG. В таблице есть поле JOB_ID. В классе JobLog ему соответствует свойство jobId. Мне необходимо при помощи запроса на HQL удалить записи из базы у которых значение JOB_ID равно указанному значению. Я пишу следующий метод:
При выполнении выбрасывается исключение:
В чем причина немогу понять. Я вроде стараюсь сделать все как в примерах из документации Этот пример взят из документации:
Вот еще один (правда про update):
|
| Автор: tux 14.2.2007, 16:19 | ||
В SQL синтаксис такой:
Попробуй. |
| Автор: vzf 14.2.2007, 16:39 | ||
Все равно не работает.
В документации сказано, что в HQL слово from в выражении для delete опционально, поэтому думаю не в этом дело. |
| Автор: tux 14.2.2007, 16:44 |
| А версия Hibernate какая? |
| Автор: vzf 14.2.2007, 16:45 |
| использую Hibernate 3.2 Вот вроде бы нашел http://forum.hibernate.org/viewtopic.php?t=944696&highlight=query+begin+select+delete в чем причина. Надо использовать другой (не дефолтный парсер). Попробую разобраться |
| Автор: vzf 14.2.2007, 17:33 | ||||||
| Изменил конфиг файл для hibernate вместо
написал
Теперь появляется другое исключение:
Я подключил к проекту файл hibernate3.jar там есть этот класс (HqlToken). Не могу понять в чем дело. Причем если в методе я попытаюсь создать экземпляр этого класса ( HqlToken t = new HqlToken(); ), то исключение не выбрасывается. |
| Автор: tux 14.2.2007, 17:46 |
| А библиотека antlr в CLASSPATH есть? |
| Автор: vzf 14.2.2007, 17:55 |
| Я включил библиотеку Antlr-2.7.6.jar в проект (и Ant-antlr-1.6.5.jar докучи). Странно что в том же методе я пишу HqlToken t = new HqlToken(); и объект создается. |
| Автор: tux 14.2.2007, 17:58 |
| Это объяснить в принципе можно. Hibernate активно использует Cglib для генерации программного кода. Естественно, в этом случае используется свой загрузчик классов, который работает не так как стандартный загрузчик из JDK (или загрузчик веб-контейнера если это веб-проиложение). Отсюда скорее всего и результат. Но вот как это решить пока не знаю. |
| Автор: vzf 14.2.2007, 18:23 |
| Может дело в сервере приложений. Я пишу в JDeveloper, соответственно приложение запускается на встроенном OC4J Server'е ? |
| Автор: Armiol 14.2.2007, 20:55 | ||
Цитата из документации Hibernate:
Взято здесь: http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate.html Мне кажется, что стоит подумать, так ли критично использовать explicit query для удаления. Тем более, что Hibernate прямо это запрещает. |
| Автор: vzf 16.2.2007, 15:01 |
| Поставил нетбинс с томкатом. Запустил. Работает. Выходит дело в OC4J. |
| Автор: tux 16.2.2007, 15:07 | ||
Чудеса. |