Использование Hibernate 4.0 У меня есть три Hibernate сущности:Дубликат ключевой вопрос с Hibernate
песни, CoverArt, CoverImage
Песни представляет музыкальный файл, CoverImage представляет собой изображение и CoverArt используется соотносить CoverImages композиций, песня может содержать несколько изображений обложки.
У песни и CoverArt есть первичный ключ, сгенерированный автоматически Hibernate. Но основной ключ Cover Image сделан вручную, созданный как MessageDigest данных изображения. Я делаю это, потому что одно и то же изображение может использоваться многими песнями, и я не хочу, чтобы отдельные экземпляры одного и того же изображения хранились несколько раз в базе данных, также потому, что ключ может быть создан из данных, которые я могу проверить в базе данных, существуют, и если они извлекают его, а не создают новый CoverImage.
Проблема заключается в том, что мое приложение многопоточно, а Hibernate фактически не передает вещи в базу данных сразу, поэтому нить 1 может проверить, действительно ли покровное изображение уже находится в базе данных, обнаружить, что оно не является и не создает новые объекты Song, CoverArt и CoverImage , Но к тому времени, получает данные фиксируются в базе данных CoverImage может быть дополнена отдельной нитью, так что я получаю исключение, потому что мой новый CoverImage имеет один и тот же ключ как существующий
Im используя
session.merge(coverImage);
, так что я думал, что справится с этим, но, похоже, не помогает
Добавить еще несколько фрагментов кода. –