假设我有以下课程:
@Entity
public class CompanyImpl extends BaseEntity {
@OneToMany(cascade=CascadeType.ALL)
private Map<Cat,Flight> flightCats;
Cat 和 Flight 类都有一个“name”属性。我怎样才能:
- 选择在他们的 flightCats 地图中有名为“Meow”的猫的公司
- 选择在他们的 flightCats 地图中有名为“Ocean”的航班的公司
我想到了类似的东西
from CompanyImpl co where co.flightCats.cat.name='Meow'
但它不起作用:(
编辑:经过一番谷歌搜索后,我发现此链接建议使用 theta 样式连接进行查询:
from CompanyImpl co left join co.flightCats cf where
(cf in indices(co.flightCats)) and (cf.name = 'Ocean')
这个查询对我来说很奇怪,我无法理解。有趣的是,它通过 Flight 对象的名称(地图的值)来限制结果,无论我使用的是 indices() 还是 elements() !!!
谁能给我解释一下这是怎么回事??!!