'Between in createdCriteria not works

I have a very strange problem. I create 3 entities with the following data:

CCB ccb1 = new Ccb(1)
CCB ccb2 = new Ccb(2)
CCB ccb3 = new Ccb(3)

Where the parameter (Long) is the object id.

Then, when wanting to create a list with the between clause, it is created with size = 0:

    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                between("id", 1, 5)
                projections {
                    id()
                }
            }
    )

I've tried this alternative and it doesn't work either:

    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                between("id", "1", "5")
                projections {
                    id()
                }
            }
    )

The incredible thing is that if I replace the between with the eq:

    ConcurrentLinkedQueue<Long> ccbIds = new ConcurrentLinkedQueue(
            Ccb.createCriteria().list {
                eq("id", 2)
                projections {
                    id()
                }
            }
    )

Now the list returns me the element with id 2! I can't understand where is the error.

Thanks!

EDIT:

Config of DataSource.groovy:

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


Solution 1:[1]

try this:

        Ccb.createCriteria().list {
            between("id", 1l, 5l)
            projections {
                property('id')
            }
        }

or:

        Ccb.createCriteria().list {
            and{
                between("id", 1l, 5l)
            }
            projections {
                property('id')
            }
        }

Solution 2:[2]

Can't you stream the list and filter by ID?

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 pablo_ignaccio
Solution 2 UgoIvy