2010-02-09 82 views

回答

0

一個選項是使用auxiliary database objects,但它會要求您從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> 

另一種選擇是隻硬着頭皮創建一個完整的實體,以取代連接表。這實際上是我在類似情況下所做的。

希望這會有所幫助。

0

您可以在集合表註釋中應用索引。例如:

@javax.persistence.ElementCollection(fetch = javax.persistence.FetchType.LAZY) 
@javax.persistence.CollectionTable(
     name = "TheJoinTable", 
     indexes = { 
      @Index(name = "MyIndex", columnList = "Entity1ID")}, 
     joinColumns = { 
      @JoinColumn(name = "TheJoinColumn")} 
) 
相關問題