【问题标题】:when select JPA tree, childNodes is always null选择 JPA 树时,childNodes 始终为 null
【发布时间】:2010-12-15 23:38:51
【问题描述】:

我正在尝试使用 JPQL 选择树结构。映射的工作方式与我预期的有点不同。它将树结构映射到父级,但 List childNodes 始终为 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; 

这里是查询:

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

这是我的表格数据:

 ID, PARENT_ID
  1      NULL
  2         1
  3         1
  4         3

我尝试过急切和懒惰的 FetchType,但 childNodes 始终为空;(有什么想法吗?

【问题讨论】:

    标签: jpa tree


    【解决方案1】:

    奇怪。您使用的是什么 JPA 提供程序和版本?

    如果您删除连接提取,您会得到孩子吗? 为孩子执行什么 SQL?

    当你为一个节点设置父节点时,你是否也添加了子节点?如果你不这样做,那么没有孩子的父母可能会缓存在你的 EntityManager 中,刷新会得到孩子吗?

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 2014-10-01
      • 2014-05-09
      • 1970-01-01
      • 2016-06-12
      • 2014-02-26
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多