2016-09-15 5 views
1

エンティティの何らかの再帰構造を持っています。エンティティGoalには、Goalエンティティ自身のリストであるプロパティsubgoalsがあります。Hibernate Query - 別のエンティティの子エンティティではないエンティティ

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

は、今私はがどのGoalsubgoalではありませんすべてGoalエンティティを取得するクエリを必要としています。

結合テーブルgoal_subgoalsがあるため、列goal_idsubgoals_idで、多分私は必要なものをそのidそのテーブルのsubgoals_id列ではありませんすべての目標です。どのようにこれを行うにはどのような提案?

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

そのセットの補数を取得する方法があります:

私はサブゴールにあるすべての目標を取得する方法を知っていますか?ここで

答えて

0

は私のために

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)); 
を働いたものです
関連する問題