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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> операции над entity в hibernate, как правильно удалять?... 
V
    Опции темы
BrutalizedProgrammer
Дата 28.4.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Зрдасте товарищи кодеры!

У меня такой вопрос....
решил я освоить hibernate и spring...
вот...

когда я удаляю данные из таблицы (делаю entity transient),
оно ругается что полю (которое not null) присвоено null или что нарушено constraint foreign key.
я так понял это следствие того, что между entity существуют связи...
... и при удалении одной записи, связанному полю в другой таблице присваивается null
или же просто нарушается constraint foreign key,
и как я понял в таком случае мне необходимо удалять
все данные в строгом иерархическом порядке.

А есть ли способ, чтоб hibernate (или spring) сделал это автоматически,
тоесть при требовании удалить что-то он еще и удалял дочерние записи в других таблицах.

Может что-то тут прозвучало по-дилетантски))),
так что не ругайтесь сильно))), а обьясните что к чему плз.
PM MAIL ICQ   Вверх
BrutalizedProgrammer
Дата 1.5.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вобщем с этим я разобрался.... )))
теперь у меня другая проблема:
у меня есть класс User, и у этого юзера могут быть друзья - другие юзеры.
как мне замапить все это дело?..
тут выходит связь many-to-many причем не между разными классами,
а между одним и тем же... 
    кароч как я понял мне надо замапить энтити саму на себя ))),
что, собственно говоря, у меня не особо получается)))),
хотел бы услышать дельный совет по этому поводу...

Это сообщение отредактировал(а) BrutalizedProgrammer - 1.5.2007, 15:51
PM MAIL ICQ   Вверх
practices
Дата 1.5.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



A вот так?

Код

    Public class User implements Serializable{
        private int id;
        private String name;
        private Set oneSideFriends;    
        private Set anotherSideFriends;    

    ... соответственные get/set

    }



xml-файл:
Код

    ....
    <class name = "User" table = "USER">
    <id name  = "id" column = "USER_ID" type = "int">
        <generator class = "native"/>
    </id>
    <property name = "name" type ="string" column="NAME"/>
    
    <set name = "friend">
        <key column = "USER_ID"/>
        <many-to-many  class = "User"/> 
    </set>
    </class>


Я конечно, не специалист, но делая выводы по книге, это может помочь  smile 
PM MAIL   Вверх
BrutalizedProgrammer
Дата 1.5.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я изначально хотел делать с одним полем friends - у меня не получилось,
потом попробовал с двумя, как у тебя в примере oneSideFriends и anotherSideFriends
 - тоже не получилось))))

И после долгих часов биться головой об стену я нашел решение!
Все дело было в маппинге!
У меня в этой связи many-to-many было свойство inverse="true",
так вот для такой связи как у меня оно не нужно)))
и когда я его убрал - все заработало как часы))))
привожу маппинг (может какие-то свойства там и лишние smile - еще не до конца разобрался):
Код

...
<hibernate-mapping>   
    <class name="su.comedyclub.model.domain.User" table="users">
        <id name="id" column="id" type="long">
            <generator class="identity"/>
        </id>
        
        <!--Add properties-->
        <property name="name" column="name" not-null="true"/>
        
        <!--Stories of this User-->                            
        <set name="stories" lazy="false" cascade="save-update">
            <key column="author"/>                 
            <one-to-many class="su.comedyclub.model.domain.Story"/>
        </set>
        
        <!--Friends of this User-->
        <set name="friends" lazy="false" cascade="save-update" outer-join="auto">
            <key column="user"/>
            <many-to-many class="su.comedyclub.model.domain.User" column="friend" />
        </set>
    </class>      
</hibernate-mapping>


*вопрос решен*

Это сообщение отредактировал(а) BrutalizedProgrammer - 1.5.2007, 21:38
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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