Cayenne查询表达 - 需要澄清

时间:2014-03-28 15:42:58

标签: sql apache-cayenne

在Apache Cayenne文档中,他们提供了一个如何使用Expression类'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是什么或者如何将它们设置为你想要查询的值!

任何人都可以解释如何设置这些参数???请指教......

1 个答案:

答案 0 :(得分:2)

您可能正在查看较旧的文档。查看"命名参数表达式" here如果您使用的是Cayenne 3.0,或者#34;从字符串创建表达式" 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);

请注意,在最后一行中,我正在重新分配Expression,因为&#39; expWithParameters&#39;创建一个克隆。