![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Lonkly |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.8.2010 Репутация: нет Всего: нет |
Доброго времени суток, товарищи =) Помогите разрешить проблему с Hibernate?) Или со структурой так сказать...?
Есть сущность User, у которой есть таблица, содержащая сущность User_Friends, в которой 2 ссылки на пользователя.
Удаляю пользователя из друзей таким образом.
Проблема: когда удаляю пользователя, он не удаляется. Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`socio`.`user_user_friends`, CONSTRAINT `FKBBEEACF5CB72EE3F` FOREIGN KEY (`friends_USER_FRIENDS_ID`) REFERENCES `user_friends` (`USER_FRIENDS_ID`)) А если ставлю так
то удаляется сразу все включая самих пользователей. Суть вопроса: что нужно сделать, чтобы чтобы удалялась только UserFriends сущность? Или как лучше сконфигурировать друзей пользователя? Это сообщение отредактировал(а) Lonkly - 5.9.2010, 00:35 |
||||||||
|
|||||||||
Zыыыыы |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
В таблице для сущности User, наверняка есть колонка типа User_Friends_id, содержащая id из таблицы User_Friends. Если это так, то стоит проверить, не стоит ли на колонке User_Friends_id ограничение not null. Если оно есть, то без удаления юзеров хибернейт не позволит удалить запись в таблице User_Friends, т.к. это нарушит ограничение. Ну и как выход, снять это ограничение.
P.S. если со структурой таблиц ошибся, то опиши ее немного подробнее. |
|||
|
||||
wedens |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
я бы сделал в классе пользователся список друзей со связью many-to-many
|
|||
|
||||
Lonkly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.8.2010 Репутация: нет Всего: нет |
О ну это очевидно, вот только потом с удалением и добавлением пользователя в друзья будет борода. Спасибо, вот это сейчас и проверим... |
|||
|
||||
Lonkly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.8.2010 Репутация: нет Всего: нет |
Не выходит. Получаю вот что...
Это сообщение отредактировал(а) Lonkly - 5.9.2010, 01:36 |
|||
|
||||
wedens |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
у вас вобще бред полный, потому ничего и не работает, если с одной стороны ManyToMany то и с другйо должно быть ManyToMany. сделайте просто в классе пользователся(ну он у вас итак есть) список друзей того же класса, не делая какой-то UserFriends с бредовыми полями и еще более бредовыми маппингами
|
|||
|
||||
Zыыыыы |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
Раз мой способ не помог, то возможно стоит действительно пересмотреть сруктуру классов. Если у одного юзера может быть несколько друзей, то можно сделать следующую структуру:
Таблица Users(id и поля по усмотрению), таблица Friends с полями id записи, id юзера, id юзера-друга. Уникальным будет только первое. Получится немного вырожденный вариант ManyToMany. Ну и, как написал wedens, сделать в классе User коллекцию друзей-юзеров. Кстати важно не забыть поставить атрибут invers="true" у связи ManyToMany, так можно будет удалять друзей юзера напрямую из коллекции юзера, а потом делать его апдейт. Поле таких манипуляций таблица Users не должна измениться, а в Friends удаляться соответствующие записи. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |