【问题标题】:Where query in Grails not returning recordsGrails中的查询不返回记录
【发布时间】:2014-01-09 20:36:48
【问题描述】:

更新:我发现了问题。我需要按如下方式保存“train”域。

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

    }

}

我在乘客查询中遗漏了什么?

【问题讨论】:

  • 您是否正在为您的测试引导测试数据?你确定数据在那里吗?
  • 你使用的是什么版本的grails?
  • 也将集成测试添加到问题中。
  • 请添加集成测试或说明您在哪里添加一些记录以进行测试。使用您的代码,我们永远不会看到“George”何时/如何被保存。
  • 我已经编辑了我的原始帖子以包含完整的集成测试代码和 Grails 版本信息。感谢您的回复。

标签: grails where


【解决方案1】:

全部,

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

而不是 . . .

train.save()

我用过。 . .

train.save(flush: true)

此后查询开始工作。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多