1
有沒有辦法使用@JoinTable
註釋,每個表連接兩個字段?下面是該示例表:在休眠中與複合鍵的多對多關係
+----------------+ +----------------------------------+ +----------------+
| example_table | | example_table_to_some_type_table | | some_type_table|
+----------------+ +----------------------------------+ +----------------+
|example_table_id| |example_table_id | |some_type_id |
|another_id | |some_type_id | |another_id |
|... | |another_id | |... |
|other columns | +----------------------------------+ |other columns |
|... | |... |
+----------------+ +----------------+
對於許多到一個情況下,它看起來像:
@ManyToOne
@JoinColumns({ @JoinColumn(name = "some_type_id",
referencedColumnName = "some_type_id",
insertable = false, updatable = false),
@JoinColumn(name = "another_id",
referencedColumnName = "another_id",
insertable = false, updatable = false) })
private SomeType someType;
但對於許多一對多的關係?我嘗試以下,並沒有奏效:
@ManyToMany(targetEntity = SomeType.class)
@JoinTable(name = "example_table_to_some_type_table",
joinColumns = { @JoinColumn(name = "example_table_id"),
@JoinColumn(name = "another_id") },
inverseJoinColumns = {
@JoinColumn(name = "some_type_id"),
@JoinColumn(name = "another_id") })
private Set<SomeType> someTypeSet;
我得到了以下錯誤:
Repeated column in mapping for collection: com.package.name.Example.someTypeSet column: another_id
我應該看什麼,在與此映射的一部分是不正確的?提前致謝。
感謝您的回答。你能解釋爲什麼我需要4列嗎?然後,您的示例中的第二個和第四個將包含相同的值。 @JoinTable看起來應該和我爲這個案例寫的一樣,還是完全錯誤? – 2013-02-08 19:15:42
不,他們不會。左側表中有一行ID爲[A,B],右側表中有一行ID爲[C,D]。所以,爲了能夠引用這兩行,你需要A,B,C和D.如果你不重複同一列兩次,你的連接表定義將會很好。 – 2013-02-08 19:19:23
我明白了你的觀點,這張表實際上可能有效,但在我的情況下確實有[A,B]和[C,B](當然,我沒有設計這些先決條件,只需要與他們合作)。所以,即使這樣做,我會重複數據。你對這種情況一般有什麼看法? – 2013-02-08 19:24:16