2011-09-06 126 views
0

我有一個非常簡單的測試用例,用於瞭解redis。我沒有安裝插件redis-gorm。Grails .findBy不適用於redis

域對象:

class BenchGroup { 
    String groupName 
    /*static mapWith = "redis" 
    static mapping = { 
    groupName(index:true) 
    }*/ 
    static constraints = { 
    } 
} 

引導代碼:

def everyoneGroup = new BenchGroup(groupName:'everyoneGroup') 
everyoneGroup.save() 
if(everyoneGroup.hasErrors()){ 
    println everyoneGroup.errors 
} 
println everyoneGroup 
def dammit = BenchGroup.findByGroupName('everyoneGroup') 
println dammit 

當我離開redis的地圖線評論它使用HSQL並將其輸出:

stupidbenchmarks.BenchGroup : 2 
stupidbenchmarks.BenchGroup : 2 

。當切換到redis它這樣做:

stupidbenchmarks.BenchGroup : 2 
null 

即.findBy不起作用。

回答

1

Hibernate在執行查詢之前刷新(在這種情況下爲findByGroupName),但NoSQL GORM數據存儲實現尚未(因此)我假設您只需要一次刷新即可將保存的實例推送到數據存儲,以便查詢將其提取出來:

everyoneGroup.save(flush: true) 
+0

通過卸載插件休眠和重新安裝「Redis的-格姆」固定它(也有安裝「redis的」插件讓我擺脫了那個),然後去除域類mapWith線。沖洗似乎不是必要的 - 代碼現在按預期工作,而不需要刷新。 – Mikey

相關問題