2012-02-07 54 views
2

遞歸關係,我有下面的類:堅持與Java的Hibernate的

public class MyItem { 
    private Long id; 
    private String name; 
    private Set<MyItem> similarItems = new HashSet<MyItem>(); 

    // constructors 
    // getters & setters 
} 

這意味着MyItem的實例包含同一類的其他項目的引用。

我已經創建了下面的列如下表:

[MyItem]: 
id 
name 

[MyItemRelations]: 
myItemId References MyItem 
myItemSimilarId References MyItem 

所以,我有兩個問題:

  1. 是我表的結構是否正確?
  2. 我的.hbm.xml應該如何?我不知道如何實現這個關係。
+0

這些表看起來正確。你想通過xml來完成配置還是使用註釋對你也好?有了註解,你可以在關係中添加一個@ ManyToMany,我猜想多個項目也可以引用相同的項目,因此在這裏產生一個n:m的關係。 – Thomas 2012-02-07 21:26:58

+0

我想通過.hbm.xml進行製作 – davs 2012-02-07 21:29:44

+0

這確實看起來像人們用來表示對象圖形的關係模​​型。處理圖形時的關係性能相當差,特別是隨着節點和邊的數量增長。你可能想使用一個實際的圖形數據庫,比如Neo4j。 – cdeszaq 2012-02-08 13:16:09

回答

1
<set name="similarItems" table="MyItemRelations"> 
    <key column="myItemId"/> 
    <many-to-many column="myItemSimilarId" class="MyItem"/> 
</set> 
+0

我是否需要爲表'MyItemRelation'聲明任何休眠配置,除此集外爲MyItem表? – davs 2012-02-08 22:08:55

+0

簡單的鏈接表沒有任何其他信息:**沒有** – Firo 2012-02-09 08:12:02