Seam - 实体查询 - 动态限制

问题描述:

我有一个EntityQuery - addressList由Seam-gen为实体Address生成。Seam - 实体查询 - 动态限制

可以说地址有以下字段:streetNamecity,所以Seam-gen为它们生成限制。

我想有以下限制致以EntityQuery: 我有一个字段“KEYVAL”可以在faces上下文与#{addressList.keyVal}进行设置。 我们假设keyValaaa bbb ccc。现在,查询应该添加哪些将被用于查找所有实体限制:

streetName like '%aaa%' or streetName like '%bbb%' or streetName like '%ccc%' 
or city like '%aaa%' or city like '%bbb%' or city like '%ccc%' 

你有什么建议,如何实现这一目标?我真的被困住了。

问题是EntityQuery不支持限制上的多个值绑定。请参阅 https://issues.jboss.org/browse/JBSEAM-1065

您可以通过创造性地使用您的标准类来解决此问题。

你有时可以看看修改查询。举例来说,如果我有一个staffName输入,我需要查询,工作人员首先希望像输入的输入或人员的姓氏名字,我可以写我的查询是这样的:

private static final String[] RESTRICTIONS = { 
    "lower(concat(s.firstName, concat(' ', s.lastName))) like concat('%', 
       concat(lower(#{criteria.staffName}), '%'))"}; 

希望这个给你一些想法。

+0

也许你知道我是否能够获得某些上下文参数的值(在我的例子中是'#{addressList.keyVal}')。然后,我可以重写getEjbql()方法并根据值添加一些限制... – androdevo 2011-01-24 22:49:56