2015-03-03 32 views
3

我有兩個類,每個類都包含一個標籤列表。現在我想找到ClassA的每個對象,其中包含ClassB列表中的任何項目。 JPQL可能嗎?或者使用單個查詢?如果列表有交集,JPQL(JPA)查找對象

public class ClassA { 
    private List<Label> labels; 
} 

public class ClassB { 
    private List<Label> labels; 
} 

@Repository 
public interface ClassARepository extends JpaRepository<ClassA, Long> { 

    @Query("SELECT c FROM ClassA c WHERE :labels ____ c.labels") 
    public List<ClassA> findAllByLabels(@Param("labels") List<Label> labels); 

} 

感謝

回答

2

試試下面的(我沒有嘗試):

SELECT DISTINCT(a) FROM ClassA a, ClassB b INNER JOIN a.labels labelA INNER JOIN b.labels labelB WHERE labelA = labelB 
+0

謝謝,但我怎麼傳遞的標籤或持有該列表中的對象的列表?當我用「:labels」替換「b.labels」時,我得到一個驗證錯誤。 – KenavR 2015-03-04 09:52:21

+0

通過傳遞ClassB的id並在WHERE子句中添加一個檢查來修復它。 SELECT DISTINCT(a)FROM ClassA a,ClassB b INNER JOIN a.labels labelA INNER JOIN b.labels labelB WHERE labelA = labelB AND b.id =:id – KenavR 2015-03-04 11:45:08