2017-09-27 187 views
0

我有2班構建查詢:休眠 - 跨@OneToMany

@Entity 
public class Basic { 
    private String a; 
    @OneToMany 
    private List<Element> elements; 
} 

@Entity 
public class Element { 
    private String b; 
} 

什麼,我試圖做的是創造一個Predicate,對於如果BasicElement其中b測試是一些價值(比如b.equals("hello world"))。 我受限於實施此方法:

public Predicate testBasic(String elementValue, Root<Basic> root, CriteriaQuery<?> query, CriteriaBuilder cb); 

非常感謝!

回答

0

我知道HQL通常可以訪問點運算符的子元素。

你試過:

where basics.elements.b LIKE %xxx% 

否則解決方案是使用JOIN

from basics b right join elements e on e.fk_b = b.id where e.b like %str% 
+0

你可以寫方法的代碼示例?另外,如果可能的話,我寧願使用標準 - 有沒有辦法? – orirab

+0

無論如何,加入... – orirab