Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> @CollectionOfElements, Hibernate ->> каскадное удаление 
:(
    Опции темы
polosatij
  Дата 21.1.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8




 smile  smile  smile 


при вызове delete приложение падает на 

Код

    @CollectionOfElements(fetch = FetchType.EAGER)
    @IndexColumn(name = "route_ind")
    public List < String > getFixIdentifiers() {
        return mFixIdentifiers;
    }


ошибка:

Код

org.springframework.dao.DataIntegrityViolationException: could not execute update query; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute update query
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:634)
...


описание траблы: каскадное удаление. попробовал поиграться с @OnDelete и @Cascade(value = { CascadeType.ALL }), @Cascade(value = { CascadeType.DELETE })

в гоогле уже 1.5 часа рыскаю, везде только вопрос на ответ, нигде ответа не могу найти  smile  smile  smile 


--------------------
PM   Вверх
polosatij
Дата 22.1.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



в общем, пошёл таким путём.. достаю объект, говорю ему, коллекция твоя null и update её сначала в бд, потом делаю delete на объекте.. 
всё, чики пики   smile 

тока как-то это грязно и мне не очень нравится  smile  smile 

Это сообщение отредактировал(а) polosatij - 22.1.2009, 16:38


--------------------
PM   Вверх
ivg
Дата 22.1.2009, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



JPA-EntityManager, standalone приложение, MySQL 5.x: указанная конструкция работает как надо и при удалении в том числе. М.б. не в этом дело? А вообще мало инфы  smile 
PM MAIL   Вверх
polosatij
Дата 22.1.2009, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(ivg @  22.1.2009,  03:12 Найти цитируемый пост)
А вообще мало инфы


EJB3, JBoss, Postgresql..

а чёрт.. я не кинул таблицы.. у меня foreign key с одной таблицы на другую.. завтра на работе смогу описать.. smile



--------------------
PM   Вверх
ivg
Дата 22.1.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



Цитата(polosatij @  22.1.2009,  05:39 Найти цитируемый пост)
EJB3

Цитата(polosatij @  22.1.2009,  01:25 Найти цитируемый пост)
org.springframework.dao.DataIntegrityViolationException:

Интересно как это всё работает.... smile

Цитата(polosatij @  22.1.2009,  01:25 Найти цитируемый пост)
при вызове delete

org.hibernate.Session#delete() ?

Цитата(polosatij @  22.1.2009,  05:39 Найти цитируемый пост)
а чёрт.. я не кинул таблицы.. у меня foreign key с одной таблицы на другую..

Это то понятно. Полный стек-трэйс? Конфиги? Исходник класса сущности? show_sql включили? Есть запрос на удаление из связанной таблицы?
Ну и всё таки, зачем вам Spring здесь нужен?
PM MAIL   Вверх
polosatij
Дата 22.1.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 3
Всего: 8



Цитата(ivg @  22.1.2009,  11:55 Найти цитируемый пост)
Интересно как это всё работает.... smile


а чёрт  smile видать поздно было  smile 

Exception конечно же кидает Spring, т.к. с помощью него написаны тесты и он чистит таблицы. а EJB3 он вызывает через Remote интерфейс smile


Цитата(ivg @  22.1.2009,  11:55 Найти цитируемый пост)
org.hibernate.Session#delete() ?


Код

    /**
     * Removes specified entity.
     *
     * @param pEntityName - entity name to delete.
     * @param pIdentifier - Aerodrome identifier.
     */
    public void deleteEntity(final String pEntityName, final String pIdentifier) {

        final Bridge bridge = Bridge.getSingleton();

        bridge.getHibernateTemplate().execute(new HibernateCallback() {
            /** {@includeDoc} */
            @SuppressWarnings("synthetic-access")
            public Object doInHibernate(final Session pSession) {
                final StringBuilder hql = new StringBuilder();
                hql.append(String.format("delete from %1$s as a where a.identifier = :identifier", pEntityName));

                final Query query = pSession.createQuery(hql.toString());
                query.setParameter("identifier", pIdentifier);

                final int size = query.executeUpdate();

                if (bridge.isDebug()) {
                    LOG4J.debug("Deleted '" + size + "' elements (" + pEntityName + " Snapshot); "
                            + "Identifier: " + pIdentifier);
                }

                return null; // delete has nothing to return
            }
        });
    }



Цитата(ivg @  22.1.2009,  11:55 Найти цитируемый пост)
Полный стек-трэйс? 


полный stacktrace не нужен, он говорит лишь о том, что exception был кинут из-за -> см. вверху..



Цитата(ivg @  22.1.2009,  11:55 Найти цитируемый пост)
Есть запрос на удаление из связанной таблицы?


ошибка:

Код

org.postgresql.util.PSQLException: ERROR: update or delete on table "aixmatsroute" violates foreign key constraint "fk9d5e2f2eec7c634b" on table "aixmatsroute_fixidentifiers"
  Detail: Key (pk)=(1629) is still referenced from table "aixmatsroute_fixidentifiers".



Цитата(ivg @  22.1.2009,  11:55 Найти цитируемый пост)
Ну и всё таки, зачем вам Spring здесь нужен? 


см выше.. для тестов smile т.к. нужны precondition и postcondition, что не входят в логику приложения.. всё надо подгоровить smile

Spring я взял из за простоты конфигурации и настройки тестирующего прилoжения.. это всё  smile





Это сообщение отредактировал(а) polosatij - 22.1.2009, 16:29


--------------------
PM   Вверх
ivg
Дата 23.1.2009, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



Похоже в 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
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.