答案 0 :(得分: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;
}
}
然后,对于每种类型的搜索,我们将能够从类中创建单个条件,或者我们可以拥有多个搜索参数类并将它们链接在一起
答案 1 :(得分:1)
我们使用HQL,但我们仍然试图围绕Criteria API包围复杂查询。使用HQL时,我们必须管理大量重复。
答案 2 :(得分:1)
我使用Ayende的东西太复杂了,你想做什么,你不能做到这一点?
基本上我们添加的是我们有一个界面,我们在其中定义我们想要搜索的所有字段,当我们要进行搜索时我们会调用它,这意味着我们可以轻松地更改我们要搜索的内容。 / p>
我们也在项目中使用Active Record(在Hibernate之上)并且非常酷,大量的任务得到简化,你有时缺乏文档 欢呼