| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > @CollectionOfElements |
| Автор: polosatij 21.1.2009, 23:25 | ||||
при вызове delete приложение падает на
ошибка:
описание траблы: каскадное удаление. попробовал поиграться с @OnDelete и @Cascade(value = { CascadeType.ALL }), @Cascade(value = { CascadeType.DELETE }) в гоогле уже 1.5 часа рыскаю, везде только вопрос на ответ, нигде ответа не могу найти |
| Автор: polosatij 22.1.2009, 00:07 |
| в общем, пошёл таким путём.. достаю объект, говорю ему, коллекция твоя null и update её сначала в бд, потом делаю delete на объекте.. всё, чики пики тока как-то это грязно и мне не очень нравится |
| Автор: ivg 22.1.2009, 03:12 |
| JPA-EntityManager, standalone приложение, MySQL 5.x: указанная конструкция работает как надо и при удалении в том числе. М.б. не в этом дело? А вообще мало инфы |
| Автор: polosatij 22.1.2009, 03:39 |
EJB3, JBoss, Postgresql.. а чёрт.. я не кинул таблицы.. у меня foreign key с одной таблицы на другую.. завтра на работе смогу описать.. |
| Автор: polosatij 22.1.2009, 13:41 | ||||
а чёрт Exception конечно же кидает Spring, т.к. с помощью него написаны тесты и он чистит таблицы. а EJB3 он вызывает через Remote интерфейс
полный stacktrace не нужен, он говорит лишь о том, что exception был кинут из-за -> см. вверху.. ошибка:
см выше.. для тестов Spring я взял из за простоты конфигурации и настройки тестирующего прилoжения.. это всё |
| Автор: ivg 23.1.2009, 01:24 |
| Похоже в HQL удаление таким образом связанных сущностей не проходит. Похоже на баг. Однако всё нормально удаляется если использовать org.hibernate.Session#delete() и иже с ним. Кстати в org.springframework.orm.hibernate3.HibernateTemplate все аналогичные операции присутствуют и, наверно, нет смысла обёртывать это в HibernateCallback? Так удаление происходит несколькими командами, в которых сначала удаляются записи из связанных таблиц. Что же касается установки в базе FK constraint on delete cascade, то, по видимому, это делается только с помощью аннотации @OnDelete(action=OnDeleteAction.CASCADE), но к сожалению, не проходит валидация при экспорте схемы. Хотя с помощью hbm2ddl проходит, и нормально ключ создаётся. PS: Hibernate-Version: 3.2.4.sp1 |