Play Framework Entities连接

时间:2013-06-02 23:40:19

标签: playframework entity models

这是一个初学者的问题,我正在尝试使用Play框架,我有一个我似乎无法弄清楚的问题

假设我将A类和B类定义为

package models;
@Entity
public class A extends Model {
@Id
Long idA;
List<B> listofB;
etc..
}

package models;
@Entity
public class B extends Model {
@Id
Long idB;
etc..
}

我也在两个类中都创建了finder类

  1. 我希望A有多个B,我希望它们不同,例如,我可以让A的id为1,B为id为1和2,A为id为2,B为id 1和2,这些B都会有所不同,我该怎么做? 我认为它与@ManyToOne标签等有关,但我无法确切知道如何做到这一点

  2. 之后,我想创建一个方法,如

    public B getB(Long idA, Long idB) {
    ...
    }
    

    可以给我一个具体的B. 我该怎么做?

  3. 提前谢谢

1 个答案:

答案 0 :(得分:0)

美好的一天。

您想要实现的数据库结构无法实现 你的代码

package models;
@Entity
public class A extends Model {
@Id
Long idA;
List<B> listofB;
etc..
}

package models;
@Entity
public class B extends Model {
@Id
Long idB;
etc..
}

记住

@Id

将是您的主键。

您的问题表明您的idB是主键,不应该具有相同的值..

为了实现这一目标,你可能希望这样做,

package models;
@Entity
public class A extends Model {
@Id
Long idA;
List<B> listofB;
etc..
}

package models;
@Entity
public class B extends Model {
@Id
Long UID;

Long idB;
etc..
}

最后,关于你的第二个问题, 试试这个

 A a = A.find("idA = ?", someIdA).first();
 B b = a.A.find("idB = ?", someIdB).first();

希望这个答案可以帮到你。 :)