0

在 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 是什么或如何将它们设置为您要查询的值!

谁能解释如何设置这些参数???请指教...

4

1 回答 1

2

您可能正在检查较旧的文档。如果您使用的是 Cayenne 3.0,请查看此处的“命名参数表达式” ,或者查看 3.1 的此处的“从字符串创建表达式”。但无论如何,这很简单——你把你的参数放在一个地图中,然后使用“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”创建了一个克隆。

于 2014-03-28T17:44:38.290 回答