2011-05-02 125 views
2

這是this問題的擴展。HQL:查找子對象包含特定屬性值的對象

而不是SQL,我將如何使用HQL做同樣的事情? (即發現,有黑色和白色兩種顏色的所有狗,但也有其他顏色)

比方說,我的實體類是這樣的:

public class Dog { 
    private Long id; 
    private Set<DogColor> colors; 
    private String name; 
    private String size; 

    ... 
} 

public class DogColor { 
    private Long id; 
    private String color; 

    ... 
} 

然後我想我的HQL看一點東西像這樣:

from dog where dog.colors contains ("black", "white") 

顯然這只是僞代碼,因爲dog.colors是一個對象而不是顏色字符串。

回答

3
Select d from dog d join d.colors o where o.color in ("black","white") 

當然你需要有正確的映射設置

+0

謝謝!在連接中使用父母的孩子並使用「where」而不是「on」是我出錯的地方。 – digiarnie 2011-05-02 11:46:30

相關問題