|
|
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Есть объект у него много связей с другими вида OneToMany, как удалить его и соответственно связанные с ним объекты используя его Id. Каскады выставлены. Сейчас делаю вот так: Код: java 1. 2. 3. Во-первых подозреваю что это не правильно, во-вторых выскакивает ошибка, что сначала надо удалить связанные с этим объектом записи из других таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2012, 21:54:31 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
в Базе почему-то не были выставлен каскад на удаление, разве это не работа Хибернайте схему Базы обновлять? И все таки как правильно удалить обьект по его Id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2012, 21:59:35 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Опять экстрасенсов ищем? Entity свой покажи. Есть там связи или нет. Устанавливать вручную id - очень, очень, очень плохая практика. Судя по ошибке, у тебя или каскады неправильно настроены у свойства, или orphanRemoval не установлен. Автоматически хибер не удаляет дерево объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 00:03:04 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
IDVsbruckОпять экстрасенсов ищем? Entity свой покажи. Есть там связи или нет. Устанавливать вручную id - очень, очень, очень плохая практика. Судя по ошибке, у тебя или каскады неправильно настроены у свойства, или orphanRemoval не установлен. Автоматически хибер не удаляет дерево объектов. Этот вопрос я уже решил) Я спрашиваю как удалить объект из базы зная его id, если у него нет связей никаких, используя Spring (hibernateTemplate)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 00:37:58 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 00:44:09 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
*class ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 00:45:36 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
IDVsbruck Код: java 1. Странно однако) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 02:50:39 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Почему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 05:18:58 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
rdmIDVsbruck Код: java 1. Странно однако)Если не хочется делать лишнее считывание, то воспользуйтесь HQL напрямую черезе Session-объект, в обход спрингового темплейта: Код: java 1. Или (не в обход темплейта) через HibernateTemplate.bulkUpdate(String queryString, Object value). Второй способ предпочтительнее, поскольку не придется обрабатывать транзакции самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 09:51:03 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
IDVsbruckПочему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 10:49:31 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Senya_Lrdmпропущено... Странно однако)Если не хочется делать лишнее считывание, то воспользуйтесь HQL напрямую черезе Session-объект, в обход спрингового темплейта: Код: java 1. Или (не в обход темплейта) через HibernateTemplate.bulkUpdate(String queryString, Object value). Второй способ предпочтительнее, поскольку не придется обрабатывать транзакции самому. Мне казалось что bulkUpdate был добавлен для массового обновления данных в таблице. Все эти способы какие-то квадратные чтоли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 10:51:41 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
rdmIDVsbruckПочему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? )session.get - загружает объект session.load - создает прокси с выставленным id-шником Попробуй вариант session.delete(session.load(MyObject.class, id)) и посмотри будет ли происходить "ненужное" вычитывание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 11:47:18 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
vas0rdmпропущено... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? )session.get - загружает объект session.load - создает прокси с выставленным id-шником Попробуй вариант session.delete(session.load(MyObject.class, id)) и посмотри будет ли происходить "ненужное" вычитывание. Все загружается) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 13:32:02 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Я только делал load у hibernateTemplate) Вопрос то как мне кажется абсолютно банальный) Как удалить объект не загружая его по long id) Неужто нет стандартного подхода к этому используя hibernateTemplate? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 13:39:55 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
hibernateTemplate.bulkUpdate(String queryString, Object value) такой вариант работает) Но разве так правильно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 13:44:33 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
Если посмотреть цепочку передачи объекта и реализацию механизма удаления сущности/объекта, то а) ясно будет, что при появлении метода delete(id) от будет делать все равно delete(get(class, id)); б) спринговский hibernateTemplate ничего совершенно сам не делает, только лишь передает параметры сессии хибернейта, а у хибера тоже нет такого метода, тоже либо только с объектом, либо еще с блокировкой (LockMode). Использование HQL (или другой способ) вряд ли оптимизирует процесс удаления. По скорости наверняка проиграет, так как конечный пункт удаления для любой цепочки удаления - это реализация DeleteEventListener и дальнейшие действия вплоть до драйвера - она одинакова, но затраты на парсинг текстового запроса, составление реального запроса к базе и т.д. - он более затратный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 15:38:17 |
|
||
|
Удаление объекта из базы Spring (Hibernate)
|
|||
|---|---|---|---|
|
#18+
IDVsbruckЕсли посмотреть цепочку передачи объекта и реализацию механизма удаления сущности/объекта, то а) ясно будет, что при появлении метода delete(id) от будет делать все равно delete(get(class, id)); б) спринговский hibernateTemplate ничего совершенно сам не делает, только лишь передает параметры сессии хибернейта, а у хибера тоже нет такого метода, тоже либо только с объектом, либо еще с блокировкой (LockMode). Использование HQL (или другой способ) вряд ли оптимизирует процесс удаления. По скорости наверняка проиграет, так как конечный пункт удаления для любой цепочки удаления - это реализация DeleteEventListener и дальнейшие действия вплоть до драйвера - она одинакова, но затраты на парсинг текстового запроса, составление реального запроса к базе и т.д. - он более затратный. Извините, я просто не понял смысл. Т.е. правильно сначала загрузить объект и потому удалить его стандартным методом delete? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2012, 18:35:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37822289&tid=2131657]: |
0ms |
get settings: |
18ms |
get forum list: |
22ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 366ms |
| total: | 559ms |

| 0 / 0 |
