2014-03-28 27 views
0

在Apache卡宴文檔,它們提供瞭如何使用表達式類fromString創建參數化的查詢()函數的示例:這樣的查詢的卡宴查詢表達式 - 需要澄清

// create a qualifier with two named parameters: "pname" and "aname" 
Expression qual = Expression.fromString("paintingTitle = $pname or toArtist.artistName = $aname"); 

// build a query prototype of a query - simply another select query 
SelectQuery proto = new SelectQuery(Painting.class, qual); 

的製作非常簡單,除了一個問題:文檔沒有解釋$ pname和$ aname是什麼或者如何將它們設置爲你想要查詢的值!

任何人都可以解釋如何設置這些參數?請告知...

回答

2

您可能正在檢查舊的文檔。如果您使用的是Cayenne 3.0,請查閱「命名參數表達式」here,或查看3.1的「爲字符串創建表達式」here。但無論如何,這很簡單 - 將參數放入Map中,然後使用「expWithParameters」方法。按照你的例子:

Expression qual = 
    Expression.fromString("paintingTitle = $pname or toArtist.artistName = $aname"); 
Map<String, Object> params = new HashMap<>(); 
params.put("pname", "A"); 
params.put("aname", "B"); 

qual = qual.expWithParameters(params); 

注意,在最後一行,我重新分配的表達,如「expWithParameters」創建克隆。

+0

謝謝!這讓事情變得非常清楚。 –