首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带参数的EntityQuery.setRestrictions和Ejbql

带参数的EntityQuery.setRestrictions和Ejbql
EN

Stack Overflow用户
提问于 2009-12-10 23:40:38
回答 1查看 3.5K关注 0票数 0

如果有人能向我展示如何使用setRestrictions方法( whitch属于org.jboss.seam.framework.EntityQuery包中的EntityQuery对象),那就太好了。

我试过这样做:

代码语言:javascript
复制
...
import org.jboss.seam.framework.EntityQuery;
import org.jboss.seam.core.Expressions.ValueExpression;

public class LetterList extends EntityQuery<Letter>
{
    public LetterList()
    {
        setEjbql("select letter from Letter letter");
    }

    public void sampleMethod(){                 
        List<ValueExpression> restrictions = new ArrayList<ValueExpression>();
        restrictions.add(createValueExpression("letter.id=7"));
        setRestrictions(restrictions);              
    }

}

但是,这段代码会引发异常。

以下几行也会导致错误:

代码语言:javascript
复制
String[] RESTRICTIONS = {"letter.id=7"};
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));

如果可以在使用setEjbql时以很好的方式传递任何参数,这也是很有趣的。我的意思是是否有可能避免串连。

我确实试图找到一些相关代码的例子,但没有成功。因此,我将非常感谢几行代码的工作。

EN

回答 1

Stack Overflow用户

发布于 2010-01-21 21:19:22

尝试以下示例:

代码语言:javascript
复制
@Name("letterList") // (1)
public class LetterList extends EntityQuery<Letter> {

    private Long letterId;

    public LetterList() {
        setEjbql("select letter from Letter letter");
        setRestrictionExpressionStrings(Arrays.asList(new String[] {
            "letter.id = #{letterList.letterId}" // (2)
        }));
    }

    public Long getLetterId() { // (3)
        return letterId;
    }
    public void setLetterId(Long letterId) {
        this.letterId = letterId;
    }
}

请注意以下三个评论位置:

component.

  • Each注释将类声明为seam

  • 限制表达式,它必须包含一个要计算的表达式,不能少也不能多。它不能与您的示例中的常量一起使用。

  • 您需要为在限制表达式中引用的每个属性定义一个getter。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1884911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档