我有两件我的谜题:
1)一个名为core-module
的无Grails项目,其中包含独立的GORM:
dependencies {
compile 'org.grails:grails-datastore-gorm-mongodb:6.0.4.RELEASE'
compile 'org.grails:grails-validation:3.2.3'
}
和域类如:
import grails.gorm.annotation.Entity
@Entity
class Module {
String id
String tags
}
GORM-ing由
初始化Map config = new Yaml().load this.class.getResource( '/application.yml' ).text
new MongoDatastore( config, Module, UserAccount )
并且域类在Grails应用程序中正常工作。
2)Grails 3.2.3
应用:
dependencies {
// default grails dependencies
compile project( ':core-module' )
compile 'org.grails.plugins:mongodb:6.0.4'
compile 'org.grails.plugins:spring-security-core:3.1.1'
// etc
}
GORM初始化如下:
def config = config.grails.mongodb
log.info "using $config"
new MongoDatastore( config, Module, UserAccount )
并将其打印到日志文件中:
g.app.init.com.mozaiq.Application - 使用[host:localhost,port:27017,databaseName:theDB,username:theUN,pooled:true,mongoOptions:[connectionsPerHost:100,autoConnectRetry:true,connectTimeout: 3000]]
问题是,属性grailsApplication.domainClasses
为空,即使Module.collection
不为空,Module.count()
返回0
尽管集合不为空。
同样在我的mongo-client中,我看到在应用程序启动时,会创建一个新的数据库test
,其中包含一个由我的某个域类命名的空集合。如果我在其中插入一些文档,.count()
将返回0
并且CRUD列表仍为空。
答案 0 :(得分:3)
出于性能原因,Grails默认仅扫描应用程序中的包。覆盖limitScanningToApplication()
以返回false
课程中的Application
,并通过覆盖packageNames()
课程中的Application
来定义您要扫描的资料包。
Grails将自动发现Mongo GORM类