Grails中的查询不返回记录

时间:2014-01-09 20:36:48

标签: grails where

更新:我发现了问题。我需要保存“火车”域名如下。

train.save(flush:true)

我也需要提供同花顺。

我编辑了包含所要求的信息。感谢。

我有两个域类如下。

class Train {

    String name
    static hasMany = [passengers: Person]
    . . .

}

class Person {

    String firstName
    String lastName
    . . .
}

我正在尝试使用where查询来查找具有给定名字的乘客。这是完整的集成测试代码。寻找乘客的第一个查询不起作用。第二个,按名称寻找火车,有效。

我正在使用Grails 2.2.1并在我的IDE Groovy / Grails Tool Suite 3.2中运行测试。我不是引导数据,而是在测试中添加数据。请参阅下面的testSomething代码。

这是测试代码。

import grails.converters.*
import static org.junit.Assert.*
import org.junit.*

class TrainIntegrationTests {

    @Before
    void setUp() {

        // Setup logic here

    }

    @After
    void tearDown() {
        // Tear down logic here
    }

    @Test
    void testSomething() {

        def person1 = new Person()
        person1.firstName = "George"
        person1.lastName = "Romero"
        person1.save();

        println "person1.id: " + person1.id

        def person2 = new Person()
        person2.firstName = "Jane"
        person2.lastName = "Smith"
        person2.save();

        def train = new Train()
        train.name = "This Train"
        train.addToPassengers(person1)
        train.addToPassengers(person2)
        train.save()

        // This prints out 2.
        println "passengers size" + train.passengers.size()

        // This does not work.  No results are returned.
        def query = Train.where {
            passengers {
                firstName == 'George'
            }
        }
        def qResults = query.list()
        // No results
        println "qResults: " + qResults


        // This does work.  Results returned.
        def query1 = Train.where {
            name == 'This Train'
        }
        def qResults1 = query1.list()
        // Returns results.
        println "qResults1: " + qResults1


        // Don't really care about assert results yet.
        // Just looking at the print outs and seeing how this all works.
        assert true

    }

}

乘客查询中缺少什么?

1 个答案:

答案 0 :(得分:0)

所有

我发现了问题。我也需要用同花顺来保存。

而不是。 。

train.save()
我用过。 。

train.save(flush: true)

此后查询开始工作。