【问题标题】:Hibernate Query - Entities that are NOT a child entity of another entity休眠查询 - 不是另一个实体的子实体的实体
【发布时间】:2016-09-15 10:47:23
【问题描述】:

我有一个实体的递归结构:实体Goal 有一个属性subgoals,它是Goal 实体本身的列表。

@Entity
@Table( name = "GOAL" )
public class Goal {
    ...
    @OneToMany
    @JoinTable(name = "goal_subgoals")
    private List<Goal> subgoals = new ArrayList<Goal>();
    ...
}   

现在我需要一个获取所有Goal实体的查询,这些实体不是任何Goal中的subgoal

由于有一个连接表goal_subgoals,列有goal_idsubgoals_id,也许我需要的是id 不在该表的subgoals_id 列中的所有目标。有关如何执行此操作的任何建议?

我知道如何获得所有属于子目标的目标:

Query query = session.createQuery(
            "SELECT subgoalx "
                    +" FROM Goal goalx "
                    + "JOIN goalx.subgoals subgoalx "                       
            );

有没有办法得到那个集合的补码?

【问题讨论】:

    标签: hibernate criteria psql


    【解决方案1】:

    这对我有用

        DetachedCriteria subQuery = DetachedCriteria.forClass(Goal.class,"goalx")
                .createAlias("goalx.subgoals", "subgoalsx")
                .setProjection(Projections.property("subgoalsx.id"));
    
        Criteria query = session.createCriteria(Goal.class)
                .add(Subqueries.propertyNotIn("id",subQuery));
    

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2011-01-15
      相关资源
      最近更新 更多