1

在激活框架上查询“AND”听起来很简单,“,”使“AND”工作

transactional {
    val personList2 = allWhere[NaturalPerson](_.name :== "Test", _.motherName :== "Mother")
}

我想知道OR是如何制作的。一个例子会很好。

4

2 回答 2

2

查看框架附带的测试套件。这是一个示例测试,取自QuerySpecs.scala

"support query with or" in {
  activateTest(
    (step: StepExecutor) => {
      import step.ctx._
      step {
        newFullActivateTestEntity
        newEmptyActivateTestEntity
      }
      step {
        query {
          (e: ActivateTestEntity) =>
            where(    (e.booleanValue :== true)
                  :|| (e.booleanValue :== false)
                  :|| (e.booleanValue isNull)) select (e)
        }.size must beEqualTo(3)

        query {
          (e: ActivateTestEntity) =>
            where(     (e.booleanValue :== true)
                   :|| (e.charValue :== fullCharValue)) select (e)
        }.size must beEqualTo(1)
      }
    })
}
于 2012-08-02T20:54:46.233 回答
1

您可以将 OR 与 allWhere 一起使用。请注意,您必须使用括号。

allWhere[NaturalPerson](p => (p.name :== "Test") :|| (p.motherName :== "Mother"))

或者您可以使用完整的查询表:

query {
    (p: NaturalPerson) => where((p.name :== "Test") :|| (p.motherName :== "Mother")) select(p)
}
于 2012-08-07T20:12:20.823 回答