首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate JPA递归查询

Hibernate JPA递归查询
EN

Stack Overflow用户
提问于 2015-01-15 18:28:54
回答 1查看 3.7K关注 0票数 1

我有以下查询,我使用hibernate一个JPA提供程序:

代码语言:javascript
运行
复制
entityManager().createQuery(
            "SELECT page FROM ProjectPage page"
             +" left join fetch page.categorySet as category"
             + " where page.id = :id " 
             + " and  category.parentCategory is null "
             + " and  (category.status is null or category.status != :status_val) "
            ,ProjectPage.class).setParameter("id", id).setParameter("status_val", Status.DELETED).getSingleResult();

以下分别是ProjectPageCategory的实体:

代码语言:javascript
运行
复制
@Entity
@Table(name="project_page")
@Configurable
public class ProjectPage {

@OneToMany( mappedBy = "parentPage")
private Set<Category> categorySet = new HashSet<Category>();
}


@Configurable
@Table(name="category")
@Entity
public class Category{

 @OneToMany(cascade = CascadeType.ALL, mappedBy = "parentCategory",fetch=FetchType.EAGER)
 private Set<com.se.dataadminbl.model.Category> categorySet = new HashSet<com.se.dataadminbl.model.Category>();

}

在上面的查询中,我试图获取一个ProjectPage和它的categorySet,如上面所示,类Category包含它的一组类型,所以每个ProjectPage对象都将包含一组Category,而这个集合中的每个对象都将包含一组Category,现在的问题是,当我检索ProjectPage对象时,where子句中的条件仅应用于每个Category中的第一级集合,而不是在每个Category中的每个集合上,因此我想要进行一个递归查询,以便我可以将where条件应用到nth级别,而不是使用代码,我试过使用拦截器,但不起作用,知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-15 21:50:11

  1. WHERE条件在引用WHERE子句中的左联接列时总是筛选出空值。因此,最终的结果是内部连接。
  2. JPA和Hibernate都不支持递归查询,因为在所有数据库中,Hibernate支持的标准实现没有一个,而且只有一个。
  3. 如果使用PostgreSQL,则可以使用公共表表达式
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27970474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档