Seam - 实体查询 - 动态限制
问题描述:
我有一个EntityQuery - addressList
由Seam-gen为实体Address
生成。Seam - 实体查询 - 动态限制
可以说地址有以下字段:streetName
和city
,所以Seam-gen为它们生成限制。
我想有以下限制致以EntityQuery: 我有一个字段“KEYVAL”可以在faces上下文与#{addressList.keyVal}
进行设置。 我们假设keyVal
是aaa 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}), '%'))"};
希望这个给你一些想法。
也许你知道我是否能够获得某些上下文参数的值(在我的例子中是'#{addressList.keyVal}')。然后,我可以重写getEjbql()方法并根据值添加一些限制... – androdevo 2011-01-24 22:49:56