powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли подружить оракловый merge и hibernate
16 сообщений из 16, страница 1 из 1
Можно ли подружить оракловый merge и hibernate
    #38280043
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все привет,

можно ли подружить оракловый мерж и хибер?
Пробую делать через тег <sql-insert> (xml конфигурация).
Соответвенно пишу так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
		<sql-insert>
			merge into mytable t
			using (select {1} as id, {2} as type_id from dual ) s 
				on
   			( t.id = s.id and  t.type_id=s.type_id)    
			when matched then 
     			update set t.status = 0
			when not matched then 
				insert (t.type_id, t.id)
				values (1,2); 
		</sql-insert>




Есть два вопроса:

1) По идее Хибер при инсерте ожидает получить новосгенеренный айдишник? А у меня то может произойти апдейт
2) Как протянуть свои значения вместо цифр в фигурных скобках? Тут проблема в том, что кастомный SQL не получится использовать ((( У меня отношение многие ко многим и с помощью мержа я как раз хочу сохранять дочерниче записи.


Спасибо
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280050
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
risk,
merge - это даже для БД крутая штука. Так сказать "умный объект SQL"
Навешивать её на ОРМ даже идеологически неверно. Подумайте от ех кто после вас)) IMHO
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280058
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да у нас вот в чем проблема....
По всему проекту куча отношений многие-ко-многим, при этому записи удалять нельзя, а можно только изменять их статус при удалении, соответственно при повторной вставке должен происходить апдейт.....
Таких мест куча, надо однообразно решить эту проблему.

Пока что такой мерж кажется наиболее вменяемым решением.
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280067
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskмногие-ко-многим, при этому записи удалять нельзя, а можно только изменять их статус при удалении,
кошмар.
У меня был один раз теоретик-постановщик, которому было всё рано "Удалить" или "Пометить на удаление".
Сочувствую.
Теперь вы это потянете на ОРМ из СУБД.
Не знаю что тут посоветовать. Это эксклюзив проект)
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280075
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну кошмар не кошмар и делать что-то надо.

При этом, есть места где тянуться все записи с БД вне зависимости от статуса, а потом уже на стороне Явы фильруется перед тем как отдать на UI. Для этих случаев я запилил универсальный мержер с помощью генериков.

Но есть места в которых используются фильтра и тянутся только активные записи.... И тут начинает веселуха.

В идеале хотел бы все перевести все к одной модели - все записи фильтруются на уровне фетча с БД, а инсертятся уже мержем....
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280080
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
risk,

А может merge делать отдельно, вне ORM, а потом соответствующие объекты рефрешить?!
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280091
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulrisk,

А может merge делать отдельно, вне ORM, а потом соответствующие объекты рефрешить?!

Ну в идеале я видел это так:

У меня есть например юзер, у него есть набор ролей, набор профилей, набор еще чего то там.

И вот у меня есть перзистент объект юзер. Я изменил его наборы ролей-профилей-чего бы либо. И потом просто делаю
getHibernateTemplate.saveOrUpdate(юзер);

И для каждого элемента каждого сета вызывается мерж.....


Что бы было удобно
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280100
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riskmad_nazgulrisk,

А может merge делать отдельно, вне ORM, а потом соответствующие объекты рефрешить?!

Ну в идеале я видел это так:

У меня есть например юзер, у него есть набор ролей, набор профилей, набор еще чего то там.

И вот у меня есть перзистент объект юзер. Я изменил его наборы ролей-профилей-чего бы либо. И потом просто делаю
getHibernateTemplate.saveOrUpdate(юзер);

И для каждого элемента каждого сета вызывается мерж.....


Что бы было удобно

Кто мешает перегрузить saveOrUpdate юзер?!
И там тупо вызвать соответствующий merge ч/з JDBC?
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280104
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
))))))))
интересный подход....
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280114
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас смотрю в сторону класса org.hibernate.collection.PersistentSet.class или чего-то подобного, что бы в одной точке переопределить алгоритм сохранения списка в БД
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280386
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
risk))))))))
интересный подход....

А мне кажется стандартный.
Чем проще, тем лучше. ;-)

P.S. вот за это я не люблю различные ORM.
Что-то простое сделать еще можно, шаг в сторону, начинаются приключения.
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38280446
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulА мне кажется стандартный.
Чем проще, тем лучше. ;-)


видать вы не видели дефолтную реализацию
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38281582
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
risk,

Как вариант поместить ваш merge в хранимую процедуру или функцию, и дергать ее.
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38281801
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Нrisk,

Как вариант поместить ваш merge в хранимую процедуру или функцию, и дергать ее.

Началось :-)
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38282126
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, во первых можно указать Hibernate свой SQL для сохранения , но это придется ручками все классы раскрашивать...
Лучше расширить Dialect (возможно еще какие то сервисы ) и генерировать MERGE вместо INSERT . Вся работа с Hobernate станет стандартной.
...
Рейтинг: 0 / 0
Можно ли подружить оракловый merge и hibernate
    #38283387
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевшийНу, во первых можно указать Hibernate свой SQL для сохранения , но это придется ручками все классы раскрашивать...
Лучше расширить Dialect (возможно еще какие то сервисы ) и генерировать MERGE вместо INSERT . Вся работа с Hobernate станет стандартной.

нельзя так сделать, потому что инсер с точки зрения хибера должен генерить новый айдишник )))

Я так понимаю что самый нормальный варианта написать свою реализацию EntityPersister
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли подружить оракловый merge и hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]