我开始学习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的微妙之处,还是我做错了什么?
答案 0 :(得分:2)
这是我的错 - 我是eBean的新手,并且正在代码中执行此操作以查找我的项目:
finder.ref(id);
而不是:
finder.byId(id);