如何使用 grails createCriteria 在休眠条件中编写嵌套的 AND 和 OR 块

发布于 2024-11-26 10:43:14 字数 815 浏览 2 评论 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

I tried to write the following SQL-Statement as a criteria:

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)
    }
  }
}

but that breaks totalCount and the result is not corect because more than one AND per OR is not allowed!

The result is (for my data):

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

The result should be (for my data):

textOrders.size() == textOrders.totalCount

Any ideas to fix this or to work around? How could it be that the size of the result is bigger than totalCount?
I added a jira issue for this: http://jira.grails.org/browse/GRAILS-7783

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦幻的心爱 2024-12-03 10:43:14

抱歉,我无法将其作为评论发布(尚不允许!),但您可以尝试

loggingSql = true

在 config.groovy 的数据源块中设置标志,然后发布或检查正在生成的 SQL hibernate?这可能会让您了解正在发生的事情。

谢谢,

吉姆。

Sorry I can't post this as a comment (not allowed yet!) but you could try setting the

loggingSql = true

flag in the datasource block of your config.groovy and posting or checking the SQL hibernate is generating? This might give you a clue as to what's going on.

Thanks,

Jim.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文