我正在尝试使用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.
谁知道我做错了什么?
答案 0 :(得分:1)
您可以在tableB上创建别名,然后使用条件。像criteria.createAlias(“tableB”,“tableb”);
之类的东西然后使用criteria.add(Restrictions.eq(“tableb.id”,“123”));