Как имитировать поведение upsert с помощью Hibernate?

Я пишу приложение, которое синхронизирует объекты из стороннего источника данных в нашу собственную схему с промежуточным этапом преобразования / сопоставления. Я использую Hibernate для представления и сохранения сущностей в нашей собственной схеме. Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть уникальный ключ с несколькими столбцами в одной из моих таблиц. Поведение, которое я хотел бы видеть, аналогично upsert: когда Hibernate переходит к сохранению объекта и обнаруживает уникальное нарушение ограничения, он вместо этого выполняет обновление. Мы используем MySQL, который предоставляет синтаксис INSERT ... ON DUPLICATE KEY UPDATE, но я Не уверен, как и можно ли заставить Hibernate использовать его?

Я полагаю, я всегда могу попробовать вставить, и если я поймаю исключение, сделаю обновление, но это кажется хакерским и неоптимальным. Есть какие-нибудь советы, как это сделать аккуратно?

11
задан Pascal Thivent 9 September 2010 в 02:20
поделиться