Но для маппинга обоих связей ты используешь одну таблицу, если ее генерит хибер, то возможно она содержит unique_constraint на 2 столбца, и когда ты добавляешь объекты и туда, и туда из-за этого падает. Но если unique_constraint в таблице нет, то это bidirectional.