我第一次爲新項目使用JDO(與Datanucleus實現),並且我遇到了使用JDO註釋定義1-N單向所有關係的麻煩。我需要的是要有Subitems
集合中的Item
,使得Subitem
沒有給業主一個參考:使用註釋的JDO - 1-N單向關係 - 列名?
@PersistenceCapable(detachable = "true")
public class Item {
...
@Persistent(defaultFetchGroup = "true")
Collection<Subitem> subitems;
...
}
這一切都很好,但我怎麼能確定哪些現有的RDBMS列該關係映射到?通過在子表中創建不可爲空的表列,但我沒有(也不想要)父代引用類字段在Subitem
中的數據庫實現了AFAIK擁有的1-N,其中I然後可以使用@Column(name="...")
註釋進行裝飾。
如何在JDO3中正確使用@ForeignKey
註釋?該註釋接受FK約束的名稱,但不接受相應的FK表和列規格。根據定義,FK是參考。約束兩個表基於一個公共密鑰,但我似乎無法指定其他表和一個公用密鑰(@ForeginKey at Datanucleus JDO docs)。
編輯: @Element(column="...")
註解,而應使用:
@PersistenceCapable(detachable = "true")
public class Item {
...
@Persistent(defaultFetchGroup = "true")
@Element(column="itemId")
Collection<Subitem> subitems;
...
}
,因爲它是在答案的文檔鏈接作了明確規定。
謝謝您的回答,我已經錯過了莫名其妙的一部分文檔。我被「@ ForeignKey」註釋的實際名稱誤導了,它似乎應該使用@Element(column =「...」)'。我現在所有想知道的是@ @ ForeignKey註解的目的是什麼。 :) –
並且非常感謝您使用優秀的數據工具,無代理且可預測的分離模式是數據對象作爲DTO的雙重職責的天賜之物(並且與GWT很好地匹配)! –
該列不是RDBMS中的「外鍵」;它僅被「外鍵」使用。 @ForeignKey定義了「外鍵」本身(它的名字以及如何/是否級聯等)。 – DataNucleus