0

我尝试编写以下 SQL 语句作为标准:

SELECT * FROM foo WHERE (a=1 AND b=1) OR (a=2 AND b=2) OR (a=3 AND b=4)

def textOrderCriteria = TextOrder.createCriteria()
textOrders = textOrderCriteria.list(max: 20, offset: 0) {
  or {
    and {
      eq('a',1)
      eq('b',1)
    }
    and {
      eq('a',2)
      eq('b',2)
    }
    and {
      eq('a',3)
      eq('b',4)
    }
  }
}

但这会破坏 totalCount 并且结果不正确,因为每个 OR 不允许有多个 AND!

结果是(对于我的数据):

textOrders.size() == 6
textOrders.totalCount == 2

结果应该是(对于我的数据):

textOrders.size() == textOrders.totalCount

有什么想法可以解决这个问题或解决问题吗?结果的大小怎么会大于totalCount?我为此添加了一个 jira 问题:http: //jira.grails.org/browse/GRAILS-7783

4

1 回答 1

0

抱歉,我不能将此作为评论发布(目前还不允许!)但您可以尝试设置

loggingSql = true

在 config.groovy 的数据源块中标记并发布或检查正在生成的 SQL 休眠?这可能会为您提供有关正在发生的事情的线索。

谢谢,

吉姆。

于 2011-08-09T14:55:55.297 回答