作者:时-_尚微视点 | 来源:互联网 | 2023-05-26 15:31
考虑该类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();
这有效.休眠忽略了一个事实,这两个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();
这失败了.该帐户有两个单独的表(来自OpB
和OpC
),所以Hibernate抱怨:
Not unique table/alias: 'account1_'
我的问题:如何Criteria
以最简单的方式使用(无SQL,HQL)查询帐户和帐户所有者?