OneToMany未在视图中填充,但如果由Controller加载则填充

时间:2012-05-18 20:07:20

标签: one-to-many playframework-2.0

我开始学习Play Framework 2,遇到了一个奇怪的问题。

我在OneToMany及其众多Project之间定义了Task关系。

@Entity
public class Project extends Model {
    @OneToMany(mappedBy="project", cascade=CascadeType.ALL)
    public List<Task> tasks = new ArrayList<Task>();
}

@Entity
public class Task extends Model {
    @ManyToOne
    public Project project;
}

我有一些代码可以找到并显示Project

final Project foundProject = Project.find(id);
//Logger.error("Tasks size:"+foundProject.tasks.size());
return ok(views.html.tasks.render(foundProject, taskForm));

观点:

@for(task <- project.tasks) {
    <li>@task.title</li>
}

请注意找到Logger的代码中已注释掉的Project行。如果该行已注释掉,则不会显示Task,如果该行未被注释掉,则会显示Task

好像某种懒惰的初始化代码在Controller内部工作但在View内部不起作用。我错过了Play的微妙之处,还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是我的错 - 我是eBean的新手,并且正在代码中执行此操作以查找我的项目:

finder.ref(id);

而不是:

finder.byId(id);