2012-04-05 48 views
0

我需要編寫一個通用的NamedQuery;例如,找到任何屬性與給定參數相匹配的所有對象。從爲MyObject莫WHERE參數等於ANY列(實體屬性)值

選擇MO其中mo.ANYAttribute = someParameter

我無法找出對 「其中mo.ANYAttribute」 的表達。這種通配符,如「+或*或ANY或。)...將省去我寫查詢的地方我必須手動編寫以檢查每個屬性,如:

其中mo.attribute1 = someParameteror或mo.attribute2 =:someParameter

我使用JPA 2.0

是否有可能這樣或那樣我不得不改變我的做法

非常感謝, 導航

回答

0

你需要什麼?列出所有一個實體的貢品,有作爲ANYAttribute沒有這樣的事情在JPA:

where mo.attr1=:someParamter or mo.attr2=:someParameter etc. 
+0

沒錯,可以這樣做;但我正在尋找像通配符,如ANY/* – mhan 2012-04-05 14:40:13

+0

沒有其他方式。這不是XSLT。 – 2012-04-05 14:41:59

+0

糟糕:)任何我可以用來提示實體管理器匹配所有實體的字段?我正在嘗試這樣做,因爲我可能選擇將查詢作爲我們保存在數據庫中的日誌的通用搜索。 – mhan 2012-04-05 14:55:53

0

這裏是@NamedQuery使用與參數的例子:

標註您的實體:

@NamedQuery(name = "findEntityById", 
query = "SELECT entity FROM Entity entity WHERE entity.id = :inputId") 

實體管理器用法:

Query namedQuery = entityManager.createNamedQuery("findEntityById"); 
namedQuery.setParameter("inputId", 1); 

A very good tutorial on NamedQueries.

+0

謝謝JMelnik,我看着它。我編輯了我的問題。我做了一些JPA,但我試圖找到一個通用的查詢,將匹配所有的屬性,而不用我做所有匹配的硬編碼。 – mhan 2012-04-05 14:53:16