为什么Ebean没有从ZenTasks示例应用程序加载字段项目?

时间:2014-01-31 15:50:33

标签: java playframework-2.0 ebean

我正在关注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字段是更好的做法吗?

问候!

1 个答案:

答案 0 :(得分:0)

升级到play-2.2.2-RC2似乎已经解决了问题。此处描述了类似的问题:Play 2.1.3 application with Maven enhanced models not loading lazy objects

仍然无法解释为什么填充了assignedTo字段,在这种情况下最有可能出现错误。