2011-11-03 28 views
3

我有一個Java超類 - 消息和3個子類 - 問題,報告,更新。對於這四個類中的每一個,我都有一個單獨的控制器(lister),它使用Hibernate從數據庫中獲取對象。此外,這些控制器中的每一個都添加了一些特定於其正在使用的類的過濾標準(限制)。 ListMessages可以爲Message類中的字段添加標準,ListProblems可以爲消息字段和問題特定字段添加標準。但是有什麼方法可以使用來自子類的字段來過濾消息?休眠filternig對象的子類的特定字段

例如,Message有一個字段內容,Problem有狀態,Report有refusalReason(所有字符串)。 我可以按內容過濾所有消息,按內容和狀態過濾問題,按內容報告並拒絕原因。但是有沒有一種按內容,狀態和拒絕原則過濾消息的方法? 我需要這個,因爲我想擁有所有消息的列表,但是能夠過濾所有實際上與過濾模式相匹配的狀態問題(或帶有refusalReason的報告)。 不幸的是,我無法從數據庫中獲取消息,並在Java代碼中對它們進行過濾 - 它們需要在數據庫端進行過濾。

回答

1

我不知道你正在使用哪種hibernate查詢語言,所以我只回答一般問題。如果您發佈了查詢(語言),我會看看是否可以通過示例更新問題。

你所要做的就是使用左外連接來包含子類,並在每個連接上添加一個額外的限制以包含你想要的過濾。這應該給你留下所需的信息。