2009-01-13 116 views

回答

1

如果我们有一个复杂的动态搜索,我们通常会构造一个SearchParameter对象,然后将它传递给一个将构建我们的标准的方法。

例如,如果我们正在寻找一个人,我们可能有一个看起来像这样的搜索对象:

public class PersonSearchParameters 
{ 
    public string FirstName {get; set;} 
    public string LastName {get; set;} 

    public ICriteria GetSearchCriteria() 
    { 
     DetachedCriteria query = DetachedCriteria.For(typeof (Person)); 
     //Add query parameters 
     Return query; 
    } 
} 

然后对于每个类型的搜索,我们就可以从创建单一标准该类,或者我们可以有多个搜索参数类并将它们链接在一起

+0

这是同我使用 谢谢你 – 2009-01-13 22:08:38

1

我们使用HQL,但我们仍然试图围绕Criteria API来处理复杂查询。使用HQL时,我们必须管理大量的重复。

+0

我不是HQL大师,但似乎用DetachedCriteria构建复杂的查询看起来更容易。 感谢您的回答 – 2009-01-13 22:10:45

1

我使用了非常多的Ayende太复杂了,你想做什么,你不能这样做?

基本上我们添加的是我们有一个接口,我们定义了所有我们想要搜索的字段,当我们要进行搜索时我们称之为这意味着我们可以轻松地改变我们正在搜索的内容。

此外,我们正在使用的Active Record项目(Hibernate的顶部)和TIS很酷,任务载荷被简化了,你缺少文档中有时确实 伤害欢呼

+0

界面的事情听起来不错,你可以请在这里发布一些代码或某处可能是我的邮件地址 – 2009-01-15 21:47:06