正在使用休眠条件查询 属性 个子实体
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"));
我正在尝试使用 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"));