我正在关注play-framework教程的ZenTask应用程序,我目前最终在这里:http://www.playframework.com/documentation/2.2.x/JavaGuide3
现在我想我发现了一个错误,或者我在推理中遗漏了一些东西,无论如何,教程在Application.java
中有以下代码行:
Task.find.all()
Task类有两个有趣的领域:
@ManyToOne
public User assignedTo;
@ManyToOne
public Project project;
现在我有以下测试用例:
@Test
public void successUserLoadTest(){
List<Task> tasks = Task.find.all();
for(Task t : tasks){
if(t.assignedTo != null)
assertNotNull(t.assignedTo.name);
}
}
@Test
public void failingProjectLoadTest(){
List<Task> tasks = Task.find.all();
for(Task t : tasks){
if(t.project != null)
assertNotNull(t.project.name);
}
}
@Test
public void successProjectLoadTest(){
List<Task> tasks = Task.find.fetch("project").findList();
for(Task t : tasks){
if(t.project != null)
assertNotNull(t.project.name);
}
}
问题是,在assignedTo字段所在的位置,未填充/加载项目字段。当我明确加载项目字段时没有问题。
我知道如何解决这个问题,或者明确加载所有ManyToOne
字段是更好的做法吗?
问候!
答案 0 :(得分:0)
升级到play-2.2.2-RC2似乎已经解决了问题。此处描述了类似的问题:Play 2.1.3 application with Maven enhanced models not loading lazy objects
仍然无法解释为什么填充了assignedTo
字段,在这种情况下最有可能出现错误。