對於上下文,客戶端我使用MVP模式,因此帶有One
列表的視圖只知道ID,並且當我在服務器上接收到新的Many
時,我想要以便能夠更新One
的外鍵,使用「setOneId」或ID爲空值的空One
對象。DataNucleus中的多對一單向關係
因此,我嘗試在DataNucleus中創建一個多對一的單向,並且我正在努力一點。我可以使用JDO或JPA,我並不在乎。在JPA,我試過這個:
@Entity
public class Many {
@Id
String id;
@ManyToOne
@Join(name = "idOne")
One one;
}
@Entity
public class One {
@Id
String id;
}
這幾乎是我想要的。一對多創建但帶有連接表。我想有一個直接的關係。當我插入/更新Many
時,我不想插入/更新相關的One
,只需在我的Many
對象中使用良好的ID更新idOne
即可。
我發現這個blogpost,但它與Hibernate的,我認爲它仍然使用一個連接表:
@Entity
public class Many {
@Id
public String id;
@Column(name="idOne")
private String idOne;
@ManyToOne
@JoinColumn(name="idOne", nullable=false, insertable=false, updatable=false)
private One one;
}
我試過,但我得到了確切this error。
我不明白我是如何掙扎的。我的目標是創建一個表,保存一些參考數據(如國家列表One
),以及創建/更新而不創建/更新的「工作項目」列表(如城鎮作爲類Many
)參考數據,只是它的外鍵在Many
對象中。
使用'@ MoneyToMany'關係。 –
你的意思是@ManyToMany? [文檔](http://www.datanucleus.org/products/datanucleus/jpa/orm/many_to_many.html)表示它是雙向的,它也使用連接表。在我的情況下,'One'對象不需要知道'Many'。 – Malexandre
如果你把你寫的代碼,並刪除'@加入',那麼這將在JPA工作。代碼生成器會爲'Many'生成一個表,其中有一列是'One'的外鍵。我不認識'@ Join'註釋,所以我懷疑這是什麼導致了這個問題。 –