2014-09-02 41 views
20

我正在使用Criteria和預測來獲取我的帳戶域上的標籤列表。就像這樣:升級Grails MongoDB GORM在列表屬性上打破預測

def tags = Account.createCriteria().list { 
    projections { property("tags") } 
} 

我的帳戶域:

class Account { 
    static mapWith = "mongo" 
    List<Tag> tags 
    ... 
    static embedded = ['tags'] 
} 

BuildConfig.groovy

// using grails 2.3.8 
plugins { 
    runtime ":hibernate:3.6.10.17" 
    compile ":mongodb:2.0.1" 

這個工作,直到我升級的MongoDB GORM插件的Grails從2.0.1至3.0.1

compile ":mongodb:3.0.1" 

現在我看到t他下面的錯誤...

The class [java.util.List] is not a known persistent type. 
    at org.grails.datastore.mapping.core.AbstractSession.retrieveAll(AbstractSession.java:723) 
    at org.grails.datastore.mapping.mongo.query.MongoQuery$AggregatedResultList.initializeFully(MongoQuery.java:1601) 
    at org.grails.datastore.mapping.mongo.query.MongoQuery$AggregatedResultList.size(MongoQuery.java:1764) 

爲什麼這個工作之前,但現在失敗?我不想重寫所有現有的查詢來使用mongoDB的聚合框架。

+0

你有沒有找到一個解決或通過調試器中運行這個,看看發生了什麼變化在從2.0.1到3.0.1的方法調用? – th3morg 2014-10-23 16:20:23

+0

這是一個老問題,但你有沒有嘗試刪除Hibernate運行時?我知道與Mongo和Hibernate有衝突。 – kevingreen 2015-03-16 15:20:21

+0

你好,試圖解決未答覆。你解決了這個問題嗎?也許你可以回答你自己的問題。 – Neoryder 2015-10-23 12:38:05

回答

-1

您可以從您的插件管理器

0

除去休眠避免衝突,您可以嘗試平時

grails clean 
grails refresh-dependencies 

還要檢查你的插件的更新版本。

另一種選擇是開關公佈一個月前的這個蒙戈插件,它應該是與GORM兼容的休眠

'org.grails.plugins:mongodb:6.0.0.M2'