【问题标题】:ManyToMany Test Fixtures (Yaml) in Play Framework 1.2.xPlay Framework 1.2.x 中的多对多测试装置 (Yaml)
【发布时间】:2012-03-31 16:21:48
【问题描述】:

我正在使用 Play! 1.2.4 + Morhpia / MongoDB。

我的模特是共享多对多关系的沙龙和造型师。但是,我无法正确定义测试数据来表示这种关系。

这就是我所做的

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;
  // ..
}

【问题讨论】:

    标签: java playframework yaml fixtures


    【解决方案1】:

    你说的双向引用是什么意思?

    如果您的意思是希望能够在代码中从您的沙龙实体访问造型师,那么您将需要这样的东西:

    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
    

    只是说 stylist1 属于 salon1 并且 salon2 在 yml 中就足够了(即您不必在两个沙龙 yml 条目中声明相同)。

    【讨论】:

    • 我想从沙龙访问造型师,例如 salon1.stylists.get(0)。我已经可以这么 stylist1.salons.get(0)
    • 在上面的代码中应该是可以的。所以如果你这样做: Salon salon1 = Salon.find("name = ?", "salon1");然后你应该可以访问你想要的造型师。使用上面的例子,salon1.stylists.get(0) 应该返回代表 stylist1 的对象。
    • 不,不起作用。我使用 Morphia 和 MongoDB 数据存储。在问题中包括我的模型类。谢谢。
    • stylist1.salons 是 null 还是空列表?还有,如果你直接查询stylist1,它知道它属于salon1吗?
    • stylist1.salons 对正确的沙龙参考有效。 salon1.stylists 是一个空列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多