2013-11-15 45 views
0

兩個聚集我有一個類User,有一些(幾乎所有物理的)細節,如:hair color, eyes color, height, ...和喜好他的理想的合作伙伴對於相同的細節。 因此,於二OO天下我有(類似Java的代碼):的ORM如何管理同類型

class User { 
    private String name; 
    ... 
    private Collection<Detail> details; 
    private Collection<Detail> partner_preferences; 
} 

class UserDetail { 
    private User user; 
    private Detail detail; 
    private String value; 
} 

class Detail { 
    private String name; 
    ... 
} 

我會使用ORM我的對象映射到關係型數據庫;現在出現的問題是:ORM如何管理這樣的情況?添加鑑別器或類似的東西足夠聰明嗎?

也許這個項目將與PHP /學說

+0

是否youwanting不同類別的每一個細節? DetailHairColor,DetailHeight等?如果是這樣,第二條原則確實支持這一點。 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html – Cerad

+0

不,我只是想存儲和檢索正確'details'和'partner_preferences'。例如:用戶有棕色的頭髮,喜歡合作伙伴金髮:'細節= {頭髮:金髮},partner_details = {頭髮:金髮}',怎麼學說沒有得到這兩個集合困惑? (同一用戶,相同的細節但不同的領域) –

回答

0

細節類聽起來像一個值對象,其教義不支持(原生)的那一刻實現,但你可以用一點的用戶態代碼的做。

如果你不把你的De​​tail類作爲一個值對象來處理,而是像一個普通的實體一樣處理,那麼這個問題就成了一個經典的多對多關係,這是ORM的一個非常基本的特性,我會如果你發現一個不支持這一點的人感到驚訝。

相關問題