我有两块拼图:
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
}的初始化。
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 -使用[主机:本地主机,端口:27017,数据库名:数据库名,用户名:theUN,池:true,mongoOptions:connectionsPerHost:100,autoConnectRetry:true,connectTimeout:3000]
问题是,属性grailsApplication.domainClasses是空的,即使Module.collection不是空的,Module.count()返回0,尽管集合不是空的。
另外,在我的mongo客户机中,我看到在app启动时,一个新的数据库test是用一个空集合创建的,该集合由我的一个域类命名。如果我向其中插入一些文档,.count()将返回0,CRUD列表仍然是空的。
发布于 2016-12-19 09:10:25
Grails默认情况下只扫描应用程序中的包,这是出于性能原因。重写limitScanningToApplication()以在Application类中返回false,并通过重写Application类中的packageNames()来定义希望扫描的包。
Grails随后将自动发现Mongo类。
https://stackoverflow.com/questions/41143475
复制相似问题