将域类从GORM-standalone模块导入Grails

时间:2016-12-14 13:09:09

标签: mongodb grails gorm

我有两件我的谜题:

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列表仍为空。

1 个答案:

答案 0 :(得分:3)

出于性能原因,Grails默认仅扫描应用程序中的包。覆盖limitScanningToApplication()以返回false课程中的Application,并通过覆盖packageNames()课程中的Application来定义您要扫描的资料包。

Grails将自动发现Mongo GORM类