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

标签 java hibernate hql hibernate-onetomany

我将 Hibernate 对象定义为

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 中执行此操作?

最佳答案

你试过吗

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

另请参阅:

关于java - Hibernate:如何编写 HQL 来获取没有其标识关系记录的实体的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3684472/

相关文章:

java - 可选/消耗可选并返回另一个可选

java - 多线程会导致静态方法的并发问题吗?

java - Hibernate 查询优化

java - 使用可选参数在 HQL 中动态搜索查询?

java - long 和 double 值的原子读写

java - Spring 5 Controller 返回html字符串以在浏览器中加载

java - 原生sql查询和JPA的性能

java - Spring STS DB 与 Jpa 的连接

java - 了解与 h2 数据库的连接

java - 组织.hibernate.PropertyNotFoundException : Could not find setter for 0