Один из вариантов - использовать вспомогательные объекты базы данных , но для этого потребуется переключиться с аннотаций JPA на традиционный .hbm.xml
файл.
Вот пример:
<!-- class mapping: -->
<class name="Entity1" table="Entity1">
<!-- insert other mappings here -->
<!-- this class's half of the many-to-many relationship: -->
<set name="Entity2s" table="TheJoinTable">
<key column="Entity1ID" />
<many-to-many class="Entity2" column="Entity2ID" />
</set>
</class>
<!-- auxiliary object: -->
<database-object>
<create>CREATE INDEX MyIndex ON TheJoinTable(Entity1ID)</create>
</database-object>
Другой вариант - просто прикусить пулю и создать полноценную сущность для замены таблицы соединения. На самом деле это то, что я сделал в подобной ситуации.
Надеюсь, это поможет.