我正在爲我的實習開發JPA Compliancy工具包......該工具包的一部分涉及測試正確實施角落案例。@ ManyToMany/@ OneToMany mappedby屬性用於雙向關聯
@ManyToMany
具有mappedBy屬性。 JPA聲明:
String mappedBy - 擁有該關係的字段或屬性。除非關係是單向的,否則是必需的。
沒有給出默認值 - 默認列爲空。
給定雙向@ManyToMany
- 本示例來自JPA 2.0 JSR-317規範本身!
客戶
@ManyToMany
@JoinTable(name="CUST_PHONES")
public Set<PhoneNumber> getPhones() { return phones; }
******中國
@ManyToMany(mappedBy="phones")
public Set<Customer> getCustomers() { return customers; }
的屬性的mappedBy尚未在Customer
的@ManyToMany
定義!有沒有我不知道的雙向映射的默認值,或者是什麼?
我看着類似的情況,結果發現: @OneToOne
- 的mappedBy是可選的,沒有默認 @OneToMany
- 完全一樣@ManyToMany
(的mappedBy是可選的雙向,沒有默認值)
總之,我的問題: 對於@ManyToMany
和@OneToMany
,應該在關係的擁有方(例如Customer
)的mappedBy屬性中放置什麼?
該兼容工具包只是JPA使用的註釋的單元測試的花哨名稱。現在關注ORM ......你是說這些單元測試(或者其他的東西)已經存在了嗎?我正在實習的公司希望我將其作爲測試其開源應用程序的一部分來開發。 我有點了解'mappedBy'的用法,我只是對其確切的措辭感到困惑。爲什麼說mappedBy註釋對於非單向關係是必需的而不排除雙向關係的擁有方? – Pimgd 2012-02-14 18:19:33
TCK用於測試JPA實現。它不用於測試使用JPA構建的應用程序。所以我想你的套件可能會有用。它可能會這樣說,因爲開發人員很懶,並且認爲註釋的用戶會讀取JPA規範或註釋本身的javadoc,其中詳細解釋了mappedBy屬性的使用。 – 2012-02-14 18:27:29
「,其中詳細解釋了mappedBy屬性的使用。」你能給我一個這個文檔的鏈接嗎?我可以在網上找到它的一些,但它似乎鸚鵡在JSR-317規範中可以閱讀的內容......並沒有揭示這種特殊情況。 – Pimgd 2012-02-14 18:37:24