来自数据库的Primefaces树

我有以下实体类:

@Entity @Table(name = "THE_TREE", catalog = "", schema = "dbo") public class TheTree implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID", nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "NODE_NAME") private String name; @Column(name = "LEVEL") private int level; @OneToMany @JoinColumn(name="PARENTID") public List children = new LinkedList(); 

我想将其表示为primefaces树,但我无法做到正确。 primefaces网站中给出的示例包含具有预定义深度的静态节点,其中我需要具有未知深度的节点并从数据库填充。 我在这里看过各种post,但对我来说没有什么是清楚的。 在这篇文章中 ,似乎作者提出了同样的问题,但答案与某个问题无关。 任何解决方案将不胜感激。

您必须创建一个递归函数来创建树。 我就是这样做的:

 @ManagedBean @ViewScoped public class TreeMBean { private TreeNode rootNode; @PostConstruct public void init() { TheTree root = new TheTree(); // instead get root object from database rootNode = newNodeWithChildren(root, null); } /** * recursive function that returns a new node with its children */ public TreeNode newNodeWithChildren(TheTree ttParent, TreeNode parent){ TreeNode newNode= new DefaultTreeNode(ttParent, parent); for (TheTree tt : ttParent.getChildren()){ TreeNode newNode2= newNodeWithChildren(tt, newNode); } return newNode; } public TreeNode getRootNode() { return rootNode; } public void setRootNode(TreeNode node) { rootNode = node; } }