Vaadin Hierarchical JPAContainer

时间:2016-12-29 09:53:50

标签: java vaadin

我的类层次结构由包含子元素列表的父元素组成。像这样:

public class ParentElement {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<ChildElement> childs;
}

public class ChildElement {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;
}

在ParentElement的视图中,我显示了ParentElement的属性(例如其名称)。为此,我创建了一个JPAContainer并将属性绑定到字段:

JPAContainer<ParentElement> parentElementContainer;
Filter filter = new Compare.Equal("id", id);
parentElementContainer = JPAContainerFactory.make(ParentElement.class, MyUI.PERSISTENCE_UNIT);
parentElementContainer.addContainerFilter(filter);
...
EntityItem<ParentElement> parentElementItem = parentElementContainer.getItem(id);
nameLabel.setPropertyDataSource(parentElementItem.getItemProperty("name"));

在ParentElement的视图中,我还想显示一个包含其所有子元素列表的可编辑网格。理想情况下,我会这样做:

childsGrid.setContainerDataSource(parentElementItem.getItemProperty("childs"));

但是,当然,这不起作用,因为item属性本身不是容器。为ParentElement的孩子列表创建JPAContainer的最佳方法是什么?

0 个答案:

没有答案