【发布时间】:2015-03-14 13:29:19
【问题描述】:
考虑 Operation 类及其 3 个子类:
class Operation {}
class OpA extends Operation { }
class OpB extends Operation { Account account; }
class OpC extends Operation { Account account; }
只有OpB 和OpC 有一个名为account 的字段。
我要查询account 属性:
session.createCriteria(Operation.class)
.add(Restrictions.eq("account", account))
.list();
这行得通。 Hibernate 忽略了 Operation 和 OpA 都没有名为 account 的字段这一事实,并返回
OpB 和 OpC 的正确结果。
但是,现在我还想查询帐户所有者,并按其排序。然后我为account 创建别名_account:
session.createCriteria(Operation.class)
.add(Restrictions.eq("account", account))
.createAlias("account", "_account")
.add(Restrictions.eq("_account.owner", "John"))
.addOrder(Order.asc("_account.owner"))
.list();
这失败了。该帐户有 2 个单独的表(来自 OpB 和 OpC),因此 Hibernate 抱怨:
Not unique table/alias: 'account1_'
我的问题:如何以最简单的方式仅使用Criteria(无 SQL,HQL)同时查询帐户和帐户所有者?
【问题讨论】:
-
所需的 SQL 是什么样的?
-
@Pedrag:对不起,我不知道。
标签: java hibernate subquery hibernate-criteria detachedcriteria