我的类层次结构由包含子元素列表的父元素组成。像这样:
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的最佳方法是什么?