gpt4 book ai didi

java - 使用 Hibernate Criteria API,如何查询仅存在于某些属性类型的属性的子属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:07 24 4
gpt4 key购买 nike

考虑类 AccountRealAccountVirtualAccountOperation,这样:

class Account { }
class RealAccount extends Account { String name; }
class VirtualAccount extends Account { }
class Operation { Account account; }

这意味着:

  1. 只有 RealAccount 有一个名为 name 的字段。
  2. Operation的账户可以是RealAccountVirtualAccount

我想查询属于具有特定名称的 RealAccount 的所有 Operation:

session.createCriteria(Operation.class)
.createAlias("account", "_account")
.add(Restrictions.eq("_account.name", "Alice"))
.list();

这失败了。

我的问题:使用“旧的”Hibernate Criteria API,如何查询仅在Operation 时才存在的帐户名的帐户是 RealAccount?可能涉及 DetachedCriteriaSubqueries...

最佳答案

您可以在子查询中引用 RealAccount 上的 name(下面的示例使用 HQL,但 Criteria equivalent 应该很简单):

select op from Operation op
where op.account.id in
(select id from RealAccount where name = :name)

关于java - 使用 Hibernate Criteria API,如何查询仅存在于某些属性类型的属性的子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com