У меня была такая же проблема.
Вам просто нужно создать среднюю сущность и сделать два отношения один-ко-многим.
Если вы проверили сгенерированные им операторы для обновления отношения «многие ко многим», вы все равно не будете их использовать.
Когда вы добавляете новый элемент в отношение «многие ко многим» отношения, которое было загружено в первый раз (я думаю, что это генерирует один оператор выбора), вы обновляете это отношение и делаете коммит. Это происходит:
Удаление выполняется для каждого объекта в массиве (может быть, это один оператор удаления или N операторов удаления, я не помню)
Все объекты повторно вставляются в базу данных (N операторов вставки + новый).
Если вы делаете много обновлений отношения «многие ко многим», то отображение «многие ко многим» не для вас. Вы можете использовать многие-ко-многим для объектов, которые не меняются или меняются не очень часто (из-за всех удалений и повторных вставок).
Вы должны сделать 3 объекта (скажем, Пользователь, Пост, Голосование - это средняя таблица USER_POST).
Создайте первичные ключи для всех этих таблиц (даже для USER_POST). Создайте суррогатный ключ и установите ограничение для USER_ID, POST_ID, который будет уникальным для таблицы USER_POST. Сопоставьте его как нормальные отношения один-ко-многим, многие-к-одному (родитель-ребенок, ребенок-родитель) и все.