正在使用休眠条件查询 属性 个子实体

Querying property of sub-entity with hibernate criteria

我正在尝试使用 Hibernate Criteria 构建查询。

我有两个表(Table A 和 Table B),它们连接了很多 - 对 - 很多。

Table B 有一个 属性,id,我想查询以过滤 Table A.

例如:

这是我的 TableA class 引用 TableB:

  @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
  @JoinTable(name = "tableb", joinColumns = {@JoinColumn(name = DATABASE_COLUMN_ID, nullable = false, updatable = false) }, inverseJoinColumns = {@JoinColumn(
      name = TABLE_B, nullable = true, updatable = false) })
  private Set<TableB> tableB;

我想查询所有 Table A 中有一个 Table B 的 ID 为 123。

我想写的代码是这样的:

criteria.add(Restrictions.eq("name", "some name"));
...
criteria.add(Restrictions.eq("tableB.id", "123"));

不幸的是,我确实遇到了这样的异常:

Caused by: org.hibernate.QueryException: could not resolve property: tableB.id of: TableA.

谁知道我做错了什么?

您可以在表B 上创建别名,然后使用条件。像 criteria.createAlias("tableB", "tableb");

然后使用 criteria.add(Restrictions.eq("tableb.id", "123"));