2012-03-15 8 views
3

Playを使用しています! 1.2.4 + Morhpia/MongoDB。Play Framework 1.2.xのManyToManyテストフィクスチャ(Yaml)

私のモデルは、多対多の関係を共有するサロンとスタイリストです。しかし、この関係を表すためにテストデータを正しく定義することはできません。ここで

が、私はこのデータを

Salon(salon1): 
    name: salon1 
    city: singapore 
    country: singapore 

Stylist(stylist1): 
    firstName: stylist1 
    lastName: stylist1 
    title: Stylist 1 
    price: $100 
    salons: [salon1] 

をやっていることだ、スタイリストがサロンではなく、その逆への参照が含まれています。

どのように双方向参照を実現するには?

おかげで、ここで スリ


がモデルクラスです。..

@Entity("salons") 
public class Salon extends Model { 
    // ... 
    @Reference 
    @ManyToMany 
    public List<Stylist> stylists; 
    // ... 
} 

@Entity("stylists") 
public class Stylist extends Model { 
    // .. 
    @Reference 
    @ManyToMany 
    public List<Salon> salons; 
    // .. 
} 

答えて

2

次の2つの方法の参照とはどういう意味ですか?

あなたがコードであなたのサロンエンティティからスタイリストにアクセスできるようにする意味であれば、あなたはこのような何かを持っている必要があります。

public class Salon extends Model { 

    @ManyToMany 
    @JoinTable(name = "salon_stylist", ...) 
    public List<Stylist> stylists; 

    ... 
} 

そして、あなたのスタイリストのエンティティは次のようになります。

public class Stylist extends Model { 

    @ManyToMany 
    @JoinTable(name = "salon_stylist", ...) 
    public List<Salon> salons; 

    ... 
}   

次に、あなたYMLは次のようになります。

Salon(salon1): 
    name: salon1 
    city: singapore 
    country: singapore 

Salon(salon2): 
    name: salon2 
    city: tokyo 
    country: japan 

Stylist(stylist1): 
    firstName: stylist1 
    lastName: stylist1 
    title: Stylist 1 
    price: $100 
    salons: 
    - salon1 
    - salon2 

ジャストと言っST ylist1はsalon1に属し、salon2はymlに十分である必要があります(つまり、 2つのsalon ymlエントリで同じものを宣言する必要はありません)。

+0

私はサロンからスタイリストにアクセスしたい、例えばsalon1.stylists.get(0)。私はすでにそうすることができますstylist1.salons.get(0) – Sri

+0

上記のコードでは可能です。だからあなたがするならば:Salon salon1 = Salon.find( "name =?"、 "salon1");あなたが好きなようにスタイリストにアクセスする必要があります。上記の例を使用して、salon1.stylists.get(0)は、stylist1を表すオブジェクトを返す必要があります。 – digiarnie

+0

いいえ、動作しません。私はMorphiaとMongoDBデータストアを使用します。私のモデルクラスを質問に入れました。ありがとう。 – Sri