我对Nhibernate很新,所以这可能听起来很傻。
我有一个函数,它根据我需要查询的内容接收参数:
Public List<Data> GetResultData(SearchParams[] searchparams) {}
在这种情况下,SearchParams
是我的类,其中有一些属性,例如ID
和Name
将用于查询。
所以这是我面临的两个挑战:
我需要在SearchParams
的属性上基于进行查询。假设searchParams
数组的一个对象是这样的:
ID, NAME
"34", ""
我们可以看到NAME
没有价值。所以我的查询需要像:
select * from DB where ID ="34".
必须根据可用值在运行时创建查询。如果两个属性都可用,那么它们都是AND
。
由于输入是搜索参数数组,因此查询数量与对象数量一样多。我试图想出一种方法,我可以将所有这些查询联合起来并一次性解雇它们。
思想?
答案 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);