vaadin网格显示没有对象数据(jpa)

时间:2017-12-01 16:37:17

标签: java object jpa vaadin vaadin-grid

我的vaadin网格存在问题。我可以轻松地设置一个新创建的对象列表,如下所示:

private Grid<Objective> test = new Grid<>(Objective.class);

List<Objective> people = Arrays.asList(
        new Objective("Nicolaus Copernicus","lol", 1),
        new Objective("Santaklaus Copernicus","qwr", 2),
        new Objective("Omarklaus Copernicus","asdf", 3));

test.setColumns("name", "difficulty");
test.setItems(sampleData);

这看起来像pic1,它的工作原理。 pic1

但是,如果我想显示我的目标列表(通过JPA保存与患者模型的关系)它不起作用(什么都不显示)。 size()是我可以选择&#34;目标bc延迟加载是标准的。我能做什么?测试了很多东西,但没有任何作用。

@Override
public void fillObjectiveList(ObjectiveList objectiveList) {
    test.setColumns("name", "difficulty");

    List<Objective> realData = objectiveList.getObjectives();
    realData.size();
    test.setItems(sampleData);

}

ObjectiveList类:

@Entity
public class ObjectiveList {

   ....

    @OneToMany(mappedBy= "objList", cascade = CascadeType.ALL)
    private List<Objective> objectives = new ArrayList<Objective>();

  ....

    public List<Objective> getObjectives() {
        return objectives;
    }

这很好用,所以我可以从列表中获取属性。

realData.get(0).getName();

每个数据都通过患者与oneToOne或ManyToOne等连接。 患者oneToOne ObjectiveList oneToMany目标

有人能帮助我吗?我没有粘贴孔代码,它非常大。如果您需要更多代码,请说出哪个部分。谢谢!

EDIT1:

我注意到的差异是支架,如果我sysout列表: manualy创建列表

  

[ch.bfh.btx8081.w2017.blue.sophobia.model.Objective@6ad2b61e,   ch.bfh.btx8081.w2017.blue.sophobia.model.Objective@66ce6ca4,   ch.bfh.btx8081.w2017.blue.sophobia.model.Objective@3d577486]

jpa创建了列表

  

{[ch.bfh.btx8081.w2017.blue.sophobia.model.Objective@214a78ec,   ch.bfh.btx8081.w2017.blue.sophobia.model.Objective@66e93870]}

2 个答案:

答案 0 :(得分:0)

试试这个:

grid.addColumn(Objective::getName).setCaption("Name");
grid.addColumn(Objective::getDifficulty).setCaption("Difficulty");

答案 1 :(得分:0)

它已经解决了。我必须添加&f; fetch = FetchType.EAGER&#39;到我的目标清单。