在這樣一個簡化的情況下,有3類:Hibernate的註解對於N ----關於與關聯數據N的關係
class ClassONE{
protected List<IntermediatedClass>;
(... getters/setters)
}
class ClassTWO
protected String someData;
(... getters/setters/iniciate List etc...)
}
class IntermediatedClass{
public ClassONE one; //Points to an object (row) of ClassONE
public ClassTWO two; //Points to an object (row) of classTWO.
public Double data; //Data that need being saved with this particular relation between obj1 and obj2.
}
我知道,與Hibernate可以聲明之間的多對多關係單向class1和class2。 Class1可以有一些class2的對象,class2可以在一些class1的對象上。那只是[CLASS1] N ---- N [CLASS2]。
我想聲明一個[CLASS1] 1 --- N [INTERMEDIATECLASS] N --- 1 [CLASS2]典型的N-N數據庫實現。中級類有一個非常重要的屬性:data,一個Double類型。我無法找到將IntermediateClass聲明爲我自己的方式來在Hibernate Annotations中使用此數據實現此N-N。
請幫忙嗎?就這個簡單的例子我可以解決我的麻煩。我沒有做出我的嘗試,以便爲了理解而保持清潔代碼。
我會嘗試與多對一集中我的AB類。只是一個問題:爲什麼你要在getter方法上面定義註釋而不在屬性上面?我已經看到,在Hibernate文檔中他們喜歡這樣做,並且我在屬性上面聲明瞭註釋。關於這個的一些提示? – Raph 2011-12-20 21:03:36
您可以在字段或獲取者上定義註釋,這取決於您。但是我認爲你必須堅持類層次結構中的一個或另一個約定。如果您在字段上定義了「@ Id」註釋,則必須在字段上定義所有註釋。如果你在getter上定義'@ Id',那就是所有的getter。另外請注意,如果你註釋了getters,你需要一個setter(可能是私有的)。只有當您將@AccessType(「field」)添加到getter時,您纔不需要setter。 – tscho 2011-12-20 21:16:00
簡而言之,我必須用AB類中的註釋手動定義[A] 1 --- N [AB] N --- 1 [B]。是的,這是最好的方法。我認爲我有辦法在@ManyToMany選項集上定義所有這個結構。謝謝 – Raph 2011-12-21 10:09:36