首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >之间在createdCriteria中不工作

之间在createdCriteria中不工作
EN

Stack Overflow用户
提问于 2022-02-04 20:24:09
回答 3查看 91关注 0票数 0

我有个很奇怪的问题。我使用以下数据创建了3个实体:

代码语言:javascript
复制
CCB ccb1 = new Ccb(1)
CCB ccb2 = new Ccb(2)
CCB ccb3 = new Ccb(3)

其中参数(Long)是对象id。

然后,当想要创建一个带有间隔子句的列表时,它被创建为size = 0:

代码语言:javascript
复制
    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                between("id", 1, 5)
                projections {
                    id()
                }
            }
    )

我尝试过这种选择,但也没有用:

代码语言:javascript
复制
    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                between("id", "1", "5")
                projections {
                    id()
                }
            }
    )

令人难以置信的是,如果我用eq替换中间部分:

代码语言:javascript
复制
    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                eq("id", 2)
                projections {
                    id()
                }
            }
    )

现在,列表返回id 2的元素!我不明白错误在哪里。

谢谢!

编辑:

DataSource.groovy的配置:

代码语言:javascript
复制
    dataSource {
        dbCreate = "create-drop"
        driverClassName = "org.h2.Driver"
        dialect = "org.hibernate.dialect.H2Dialect"
        url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-08 14:38:09

在运行不同的测试之后,我得出的结论是,在使用H2存储时,它是Grails中的一个bug。对于SQL,它工作得很好。

票数 -1
EN

Stack Overflow用户

发布于 2022-02-08 01:32:27

试试这个:

代码语言:javascript
复制
        Ccb.createCriteria().list {
            between("id", 1l, 5l)
            projections {
                property('id')
            }
        }

或者:

代码语言:javascript
复制
        Ccb.createCriteria().list {
            and{
                between("id", 1l, 5l)
            }
            projections {
                property('id')
            }
        }
票数 0
EN

Stack Overflow用户

发布于 2022-02-07 11:05:05

您不能按ID流列表并进行筛选吗?

def list = foolist.stream().filter(f -> f.getId() > 0 && f.getId() < 4).collect(Collectors.toList())

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70992456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档