[英]Using Hibernate Criteria API, how to query for a subproperty of a property that exists only for certain property types
考虑类Account
, RealAccount
, VirtualAccount
和Operation
,以便:
class Account { }
class RealAccount extends Account { String name; }
class VirtualAccount extends Account { }
class Operation { Account account; }
这意味着:
RealAccount
有一个名为name
的字段。 Operation
的帐户可以是RealAccount
或VirtualAccount
。 我想查询属于具有特定名称的RealAccount
所有Operation
:
session.createCriteria(Operation.class)
.createAlias("account", "_account")
.add(Restrictions.eq("_account.name", "Alice"))
.list();
这失败了。
我的问题:使用“旧的”Hibernate Criteria API ,如何查询仅当Operation
的帐户是RealAccount
时才存在的帐户名 ? 也许一些envolving DetachedCriteria
和Subqueries
...
您可以在子查询中引用RealAccount
上的name
(下面的示例使用HQL,但Criteria等效项应该很简单):
select op from Operation op
where op.account.id in
(select id from RealAccount where name = :name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.