2014-01-09 47 views
0

更新:我發現了這個問題。我需要如下保存「火車」域名。在哪裏查詢Grails不返回記錄

train.save(沖洗:真)

我需要提供一個齊平,也是如此。

我編輯了包含請求的信息。謝謝。

我有兩個域類如下。

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

您是否爲您的測試引導測試數據?你確定數據在那裏嗎? – Gregg

+0

您使用的是哪個版本的grails? –

+1

將集成測試也添加到問題中。 – dmahapatro

回答

0

全部,

我發現了這個問題。我也需要用沖水保存。

而不是。 。 。

train.save() 

我用過。 。 。

train.save(flush: true) 

查詢在此之後開始工作。

+0

很酷應該已經發現了 – Vahid