Seam - 实体查询 - 动态限制

时间:2011-01-24 12:58:56

标签: jpa seam restrictions seam-gen

我有一个EntityQuery - addressList由Seam-gen为实体Address生成。

假设该地址包含以下字段:streetNamecity,因此Seam-gen会为其生成限制。

我想扩展我的EntityQuery,但有以下限制: 我有一个字段'keyVal',可以在#{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%'

您对如何实现这一点有什么建议吗?我真的被困了。

1 个答案:

答案 0 :(得分:0)

问题是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}), '%'))"};

希望这会给你一些想法。