代码之家  ›  专栏  ›  技术社区  ›  Ritesh M Nayak beny23

Hibernate:如何编写HQL来获取实体的记录,而没有实体标识关系的记录

  •  1
  • Ritesh M Nayak beny23  · 技术社区  · 14 年前

    Class SomeText{
      private Long textId;
      private Set<Tag> Tags = new HashSet<Tag>();
    
      @ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE })
      @JoinTable(name = "text_tag_reln",
       joinColumns = { @JoinColumn(name = "textId") },
       inverseJoinColumns = { @JoinColumn(name = "tagId") })
        public Set<Tag> getTags() {
            return Tags;
        }
    }
    
    Class Tag{
      private long tagId;
    }
    

    我现在想要得到所有那些没有任何标记的SomeText对象。我写了下面的HQL,但它不起作用。

    select st from SomeText as st where st.Tags = null
    

    我该怎么做才能得到这些记录。在SQL世界中,我会编写一个查询,从text\u tag\u reln表中获取所有不同的textid,并获取该集合中不存在的所有SomeText id。如何在HQL中执行此操作?

    1 回复  |  直到 14 年前
        1
  •  1
  •   axtavt    14 年前

    select st from SomeText as st where st.Tags is empty
    

    另请参见: