使用play访问OneToMany元素

时间:2015-08-12 15:26:48

标签: java scala playframework

我是一名Java开发人员,去年我也做了一些Ruby。 我最近发现play framework,这听起来像两个世界中最好的一样。

我正在尝试创建我的第一个应用程序,并且我在文档中似乎找不到一些东西: 您如何访问OneToMany关系中的父母/子女?

我的项目包含一个项目模型,可以有几个里程碑。它定义如下:

@Entity
public class Project extends Model {

    @Id
    public String id;

    public String name;
    public int number;

    @OneToMany
    public Milestone milestone;
}

我的里程碑也非常简单:

@Entity
public class Milestone extends Model{

    @Id
    public String id;

    @ManyToOne
    public Project project;

    public String name;
    public Date expectedEnd;
}

现在,我想列出项目的所有里程碑,或者为项目添加里程碑。

在rails中,我会在我的html templates中执行类似的操作:

@project.milestones

但如果我尝试玩游戏,我会收到错误,因为没有定义里程碑。

value milestones is not a member of models.project

我也试过

@project.milestones.size()

因为我希望得到一个列表(一对多),但这显然不起作用。

value size is not a member of model.Milestone

你能告诉我我应该如何获得里程碑吗? 相反,我如何获得里程碑项目?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用:

@Entity
public class Project extends Model {

    @Id
    public String id;

    public String name;
    public int number;

    @OneToMany(mappedBy = "project")
    public java.util.List<Milestone> milestones = new ArrayList<>();
}

@Entity
public class Milestone extends Model{

    @Id
    public String id;

    @ManyToOne
    public Project project;

    public String name;
    public Date expectedEnd;
}

所以你可以在vie中使用它们。像:

<ul>
@for(milestone <- project.milestones){
    <li>@milestone.name</li>
}
</ul>