在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是什么或者如何将它们设置为你想要查询的值!
任何人都可以解释如何设置这些参数???请指教......
答案 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;创建一个克隆。