2010-02-23 57 views
0

假設Student是包含ComputerScienceStudent和ITStudent的繼承層次結構中的父類。學生定義一個名爲favoriteColors的字段,它是一個值類型的字符串集合。使用標準API,我想查詢列出「藍色」作爲他們最喜歡的顏色之一的所有學生。如何使用Hibernate Criteria查詢具有String集合中的值的對象?

下面是相關Java代碼

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
abstract class Student { 

    @CollectionOfElements 
    Set<String> favoriteColors = new TreeSet<String>(); 

我看着在http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html發現Hibernate文檔,它看起來像這樣的事情可能是一個開始

List students = sess.createCriteria(Student.class) 
.createCriteria("favoriteColors") 
    .add(Restrictions.eq(??????, "blue")) 
.list(); 

,但我不知道什麼填寫作爲財產的名稱,因爲字符串不是我定義的類(因此??????)

我真的想避免使用HQL unles使用標準絕對沒有辦法做到這一點。我也想避免添加sqlRestrictions。我不認爲示例API會起作用,因爲Student是繼承層次結構中的抽象父類,並且我無法創建具體的學生作爲示例傳入。

這可能嗎?謝謝你的時間!

回答

0

你有沒有試着寫

編輯:好吧,這是行不通的。根據this related question,使用Criteria API目前不可能引用值類型集合的元素。

+0

只是做了,它失敗了,消息ERROR org.hibernate.util.JDBCExceptionReporter - 參數#1沒有設置 –

+0

我明白了。編輯包括 - 我發現了一個相關的問題,希望有所幫助。 – meriton

+0

這是個壞消息。但是,謝謝。至少現在我知道不要繼續追求這條路,直到hibernate獲得這個功能。 –

相關問題