gpt4 book ai didi

hibernate - 查询与扩展域类的关系

转载 作者:行者123 更新时间:2023-12-02 16:00:50 24 4
gpt4 key购买 nike

我有一些 Realm 类:

class Dealer {
hasMany = [vehicles: Vehicle]
}

class Vehicle {
belongsTo = [dealer: Dealer]
}

class Car extends Vehicle {
}

class Bus extends Vehicle {
belongsTo = [liabilityInsurance: LiabilityInsurance]
}

class LiabilityInsurance {
hasMany = [buses: Bus]
}

我想进行一个标准查询(或一个HQL查询),该查询将查找所有出售了 DealerVehicle(一个 Bus)的 LiabilityInsurance

我遇到了麻烦,因为我无法自上而下地遍历这些关系:
Dealer.withCriteria {
vehicle {
eq 'liabilityInsurance', foo // error, vehicle doesn't have liabilityInsurance
}
}

任何想法如何做到这一点?

编辑:

提到了类似的问题 herehere

最佳答案

我不熟悉Grails语法,因此我将提供纯JPA的解决方案。如果发现有用,可以将其翻译为Grails:

select distinct d from Dealer d join d.vehicles v
where v in (select b from Bus b where b.liabilityInsurance = foo)

如果您有更多具有责任保险的车辆(而不是 Bus),则最好从扩展 Vehicle并定义 liabilityInsurance的基类扩展它们。然后,您将在 in子句中引用基类。如果这不适合您的设计,则可以为每个这样的实体重复 in子句:
...
or v in (select a from Airplane a where a.liabilityInsurance = foo)

但是,如果只有责任保险的 Bus,那么最简单的方法是:
select distinct b.dealer from Bus b where b.liabilityInsurance = foo

关于hibernate - 查询与扩展域类的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182876/

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