Hallo zusammen,
Ich habe die folgende Klasse (Entity):
Nun würde ich gerne meine Hierarchy aufbauen.
Also Root (bzw. oberste Ebene können mehrere sein)...
Ich möchte allerdings nur diese, die aden Status ACTIVE haben....
Frage:
1) Soll ich zunächst alle Branch (die aktiv sind) mir aus der Datenbank holen und dann die Hierarchy aufbauen?
2) Wie sieht die rekursive Methode aus?
Wichtig:
Ich verwende Primefaces und muss die "Branch" Entity dann noch "umwandeln" in ein TreeNode Objekt....
Hier ein Ansatz der Methode, was aber nicht 100% funktioniert...
Danke für jede Hilfe..
Ich habe die folgende Klasse (Entity):
Java:
@Entity
@Table(name = "branch", indexes = { @Index(columnList = "branch_id, id_hash, status, delete_flag") })
public class Branch implements Serializable {
private static final long serialVersionUID = 1L;
public static final Long NO_ID = Long.valueOf(0);
@Id
@GeneratedValue(generator = "branch_id_seq", strategy = AUTO)
@SequenceGenerator(name = "branch_id_seq", sequenceName = "branch_branch_id_seq", allocationSize = 1)
@Column(name = "branch_id", nullable = false)
private Long id = NO_ID;
// ID Hash (für URL)
@NotNull
@Size(max = Constants.SIZE_MAX_STRING)
@Column(name = "id_hash", length = Constants.SIZE_MAX_STRING, nullable = false)
private String idHash;
// Status des Beitrags
@NotNull(message = "Bitte ein Status angeben")
@Size(max = Constants.SIZE_MAX_STRING)
@Column(name = "status", length = Constants.SIZE_MAX_STRING, nullable = false)
private String status = BranchStatus.ACTIVE.toString();
public enum BranchStatus {
ACTIVE, // Aktiv
INACTIVE, // Inaktiv
DRAFT, // Entwurf
DECLINE, // Gesperrt
}
// Level
@Column(name = "tree_level", nullable = true)
private int treeLevel = 0;
// Parent
@ManyToOne
@JoinColumn(name = "parent_branch_fk")
private Branch parentBranch;
// Children
@OneToMany(mappedBy = "parentBranch", cascade = { PERSIST, MERGE, REMOVE, REFRESH })
@LazyCollection(LazyCollectionOption.FALSE)
private List<Branch> childrenBranch;
Nun würde ich gerne meine Hierarchy aufbauen.
Also Root (bzw. oberste Ebene können mehrere sein)...
Ich möchte allerdings nur diese, die aden Status ACTIVE haben....
Frage:
1) Soll ich zunächst alle Branch (die aktiv sind) mir aus der Datenbank holen und dann die Hierarchy aufbauen?
2) Wie sieht die rekursive Methode aus?
Wichtig:
Ich verwende Primefaces und muss die "Branch" Entity dann noch "umwandeln" in ein TreeNode Objekt....
Hier ein Ansatz der Methode, was aber nicht 100% funktioniert...
Java:
public void init() {
Branch root = new Branch(); // instead get root object from database
rootNode = newNodeWithChildren(root, null);
}
/**
* recursive function that returns a new node with its children
*/
public TreeNode newNodeWithChildren(Branch ttParent, TreeNode parent){
TreeNode newNode= new DefaultTreeNode(ttParent, parent);
for (Branch tt : ttParent.getChildrenBranch()){
TreeNode newNode2= newNodeWithChildren(tt, newNode);
}
return newNode;
}
Danke für jede Hilfe..