假設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是繼承層次結構中的抽象父類,並且我無法創建具體的學生作爲示例傳入。
這可能嗎?謝謝你的時間!
只是做了,它失敗了,消息ERROR org.hibernate.util.JDBCExceptionReporter - 參數#1沒有設置 –
我明白了。編輯包括 - 我發現了一個相關的問題,希望有所幫助。 – meriton
這是個壞消息。但是,謝謝。至少現在我知道不要繼續追求這條路,直到hibernate獲得這個功能。 –