【问题标题】:Seam - Entity Query - dynamic restrictionsSeam - 实体查询 - 动态限制
【发布时间】:2011-06-14 12:18:08
【问题描述】:

我有一个 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%'

您对如何实现这一目标有任何建议吗?我真的被卡住了。

【问题讨论】:

    标签: jpa seam restrictions seam-gen


    【解决方案1】:

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

    您有时可以通过创造性地使用您的条件类来解决此问题。

    您有时可以查看修改查询。例如,如果我有一个单一的员工姓名输入,并且我需要查询像输入一样的员工名字或像输入一样的员工姓氏,我可以这样编写查询:

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

    希望这能给你一些想法。

    【讨论】:

    • 也许你知道我是否能够获得一些上下文参数的值(在我的例子中是'#{addressList.keyVal}')。然后我可以覆盖 getEjbql() 方法并根据值添加一些限制...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多