Как обрабатывать многопоточные вставки с уникальным ограничением в базе данных, используя JPA / Hibernate? - PullRequest
2 голосов
/ 15 апреля 2011

в бине, управляемом сообщениями, я сохраняю записи в таблице поиска с уникальными записями. Обычно я создаю оператор выбора с критериями api, и если я не нахожу запись, я создаю ее.

В настоящее время этот код работает с ошибками mysql, потому что в некоторых случаях создание этой записи (em.persist(entry)) нарушало бы уникальные ограничения для моей базы данных. другой экземпляр моего mdb создал запись для поиска после того, как я ее не нашел и до того, как смог ее создать.

Как я могу справиться с этой проблемой синхронизации, так что все еще есть только одна запись?

1 Ответ

1 голос
/ 15 апреля 2011

Вам нужно использовать ВЫБРАТЬ ДЛЯ ОБНОВЛЕНИЯ или по-разному обеспечивать уникальность (например, генерировать уникальную часть записи внутри Java).

Hibernate поддерживает пессимистичные блокировки , которые, как я считаю, являются просто еще одним названием для той же вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...