次のクラスがあるとします。
@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'
しかし、それは動作しません:(
編集:グーグルで検索した後、シータスタイルの結合を使用したクエリを示唆するこのリンクを見つけました:
from CompanyImpl co left join co.flightCats cf where
(cf in indices(co.flightCats)) and (cf.name = 'Ocean')
このクエリは私にとって奇妙で、理解できません。おもしろいのは、index() と elements() のどちらを使用しても、Flight オブジェクトの名前 (マップの値) によって結果が制限されることです!!!
誰が私に何が起こっているのか説明できますか??!!