2016-05-11 6 views
0
i have a question about the hibernate many to many query. 


@Entity 
    @Table(name = "ROLES") 
    public class Role implements Serializable { 
     @Id 
     @GeneratedValue(strategy = GenerationType.AUTO) 
    @ManyToMany(mappedBy = "roleSet", fetch = FetchType.EAGER, cascade = CascadeType.MERGE) 
     @Fetch(FetchMode.SELECT) 
     private Set<Role> parentSet = new HashSet<Role>(); 
    @ManyToMany(targetEntity = Role.class, cascade = {CascadeType.ALL}, fetch = FetchType.EAGER) 
     @Fetch(FetchMode.SELECT) 
     @JoinTable(name = "R_PARENT_ROLE", joinColumns = @JoinColumn(name = "parentId"), inverseJoinColumns = @JoinColumn(name = "ROLEID")) 
     private Set<Role> roleSet = new HashSet<Role>(); 
    } 

nullである私はparentSetによる役割の一覧を照会するnullである コードのように:休止状態:多対多での基準とHashSetのは、クエリ条件として

public <T> List<T> gets(Class<T> clazz){ 
     Session session = getSession(); 
     Criteria criteria = session.createCriteria(clazz); 
     criteria.createAlias("parentSet","parentSet"); 
      criteria.add(Restrictions.isNull("parentSet")); 
      return criteria.list();   
     } 

しかし結果は私が望んでいない。 どのようにすればいいですか? 私に教えてもらえますか? ありがとう!

public <T> List<T> gets(Class<T> clazz){ 
      Session session = getSession(); 
      Criteria criteria = session.createCriteria(clazz); 
      criteria.createAlias("roleSet","roleSet"); 
       criteria.add(Restrictions.neProperty("roleSet.id", "id")); 
       return criteria.list();   
      } 

と私の好きな結果:

答えて

0

は、私はこのコードをテストします。 私はparentSetがnullだと思うので、テーブルr_parent_roleのrole.idはparentidにのみ使われ、roleidには使われません。感謝! ありがとう!

関連する問題