用hibernate查询语言查询子实体的属性

时间:2015-08-03 20:28:10

标签: hibernate hql hibernate-criteria

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

我有两个表(表A和表B),它们很多 - 很多 - 都连接起来。

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

例如:

这是我引用TableB的TableA类:

  @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;

我想查询所有表A中有一个ID为123的表B.

我想写的代码是这样的:

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.

谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

之类的东西

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