Hibernate:我如何编写HQL来获取实体的记录,而不记录其识别关系的记录

时间:2010-09-10 12:10:39

标签: java hibernate hql hibernate-onetomany

我将Hibernate Objects定义为

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_tag_reln表中获取所有不同的textId,并获取该集合中不存在的所有SomeText ID。我怎样才能在HQL中执行此操作?

1 个答案:

答案 0 :(得分:1)

你试过吗

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

另见: