Nhibernate查询联合

时间:2014-05-22 11:39:29

标签: nhibernate nhibernate-criteria queryover

我对Nhibernate很新,所以这可能听起来很傻。

我有一个函数,它根据我需要查询的内容接收参数:

Public List<Data> GetResultData(SearchParams[] searchparams) {}

在这种情况下,SearchParams是我的类,其中有一些属性,例如IDName将用于查询。

所以这是我面临的两个挑战:

  1. 我需要在SearchParams的属性上基于进行查询。假设searchParams数组的一个对象是这样的:

    ID,  NAME 
    "34", ""
    

    我们可以看到NAME没有价值。所以我的查询需要像:

    select * from DB where ID ="34".
    

    必须根据可用值在运行时创建查询。如果两个属性都可用,那么它们都是AND

  2. 由于输入是搜索参数数组,因此查询数量与对象数量一样多。我试图想出一种方法,我可以将所有这些查询联合起来并一次性解雇它们。

  3. 思想?

1 个答案:

答案 0 :(得分:-1)

与...相关的一系列限制或被称为分离。与...相关的一系列限制,称为连词。

所以,你需要的是

第三个条件的一个连词 一个分离链接第一,第二和第三个条件: 所以这就是:

Criterion startInRange = Restrictions.between("expectedStartCanonicDate", rangeStart, rangeEnd);

Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate", rangeStart, rangeEnd);

Criterion thirdCondition = 
    Restrictions.conjunction().add(Restrictions.le("expectedStartCanonicDate", rangeStart))
                              .add(Restrictions.ge("expectedCompletionCanonicDate", rangeEnd));

Criterion completeCondition = 
    Restrictions.disjunction().add(startInRange)
                              .add(endInRange)
                              .add(thirdCondition);

criteria.add(completeCondition);