2010-12-15 4 views
2

J'essaie de sélectionner la structure arborescente à l'aide de JPQL. La cartographie fonctionne un peu différemment de ce à quoi je m'attendais. Il mappe structure arbre parent, mais la liste childNodes est toujours null :(Voici ma carte:lorsque l'arborescence JPA sélectionnée, childNodes est toujours null

@Entity 
@NamedQueries({ 
     @NamedQuery(name = "TreeNode.findAllTree", 
       query = "select p from TreeNode p " + 
        "LEFT JOIN fetch p.parentNode"), 
    }) 
public class TreeNode { 
    @Id 
    private long id = 0; 

    @ManyToOne 
    @JoinColumn(name = "parent_id") 
    public TreeNode parentNode; 

    @OneToMany(mappedBy="parentNode") 
    public List<TreeNode> childNodes; 

Voici la requête:

List<TreeNode> list = super.getEntityManager().createNamedQuery("TreeNode.findAllTree").getResultList(); 

Voici mes données de table:

ID, PARENT_ID 
    1  NULL 
    2   1 
    3   1 
    4   3 

J'ai essayé ardent et paresseux FetchType mais childNodes est toujours null; (Des idées?

Répondre

1

Odd. fournisseur et version utilisez-vous?

Si vous supprimez l'extraction de jointure, obtenez-vous les enfants? Quel SQL est exécuté pour les enfants?

Lorsque vous définissez le parent pour un noeud, ajoutez-vous également l'enfant? Si vous ne le faites pas, alors le parent sans enfants pourrait être mis en cache dans votre EntityManager, est-ce qu'un rafraîchissement obtient les enfants?

+0

Merci James. Cache était la raison du problème !!! – maxx

Questions connexes