假设我有以下课程:
@Entity
public class CompanyImpl extends BaseEntity {
@OneToMany(cascade=CascadeType.ALL)
private Map<Cat,Flight> flightCats;
Cat和Flight课程都有一个&#34;名称&#34;属性。我怎么能:
我想到像
这样的东西from CompanyImpl co where co.flightCats.cat.name='Meow'
但它不起作用:(
编辑:经过一些谷歌搜索后,我发现这个link建议使用theta风格的连接进行查询:
from CompanyImpl co left join co.flightCats cf where
(cf in indices(co.flightCats)) and (cf.name = 'Ocean')
这个查询对我来说很奇怪,我无法理解。有趣的是它限制Flight对象的结果&#39;名称(地图的值),无论我是否使用indices()或elements()!!!
有人可以向我解释发生了什么事吗?? !!
答案 0 :(得分:2)
在(N)Hibernate文档中记录的内容并不是很好,但记录在案:
它有特殊的HQL函数:indices()
和elements()
尝试这样的事情:
from CompanyImpl co where indices(co.flightCats).name='Meow'
NHibernate HQL文档提到了chapter 14中的索引和元素。