我在处理多个数据源时遇到了这个简单配置的问题而且我试图将新实例保存到特定数据源
我的数据源:
dataSources:
dataSource:
pooled: true
jmxExport: true
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
driverClassName: com.mysql.jdbc.Driver
username: root
password: Choice2016
dominio1:
pooled: true
jmxExport: true
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
driverClassName: com.mysql.jdbc.Driver
username: root
password: Choice2016
dominio2:
pooled: true
jmxExport: true
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
driverClassName: com.mysql.jdbc.Driver
username: root
password: Choice2016
我的域名
class Nxtt_reports {
Boolean favorite
static hasMany = [nxtt_report_histories: Nxtt_report_history, nxtt_user_reports: Nxtt_user_reports, nxtt_report_snapshots: Nxtt_report_snapshot]
static constraints = {
}
static mapping = {
datasource 'ALL'
}
}
当我这样做时,
def nxtt = Nxtt_reports.class
println(nxtt.dominio1.list())
我可以在我想要的域中列出数据,但如果我这样做
def nxtt = Nxtt_reports.class.newInstance()
nxtt.favorite = 0
nxtt.dominio2.save()
我得到了这个
没有这样的属性:dominio2 for class:nexttreport.server.Nxtt_reports。 Stacktrace如下: groovy.lang.MissingPropertyException:没有这样的属性:dominio2 for class:nexttreport.server.Nxtt_reports
使用:
| Grails版本:3.1.1 | Groovy版本:2.4.5 | JVM版本:1.8.0_65
修改
environments:
development:
dataSources:
dataSource:
dbCreate: update
url: jdbc:mysql://192.168.1.24:3306/nexttreport?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
dominio1:
dbCreate: update
url: jdbc:mysql://192.168.1.24:3306/dominio1?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
dominio2:
dbCreate: update
url: jdbc:mysql://192.168.1.24:3306/dominio2?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
答案 0 :(得分:0)
我在阅读和理解您的代码时遇到了一些麻烦,因为您没有遵循正常的Java / Groovy约定。
首先,我建议您使用普通的CamelCase,不要在类名中使用下划线,因此请使用NxxtReports
。
其次,为什么不NxxtReports.domino1.list()
?
list()
是NxxtReports
上的静态方法,因此请将其称为。</ p>
第三,我认为最重要的是,使用普通的Java / Groovy实例化Object的方式,所以
def nxxt = new NxxtReport()
nxxt.favorite = 0
nxxt.domino2.save()
我怀疑通过调用newInstance()
变量上的class
,未正确添加DomainClass实例上的额外Grails方法。
我手边没有真正的计算机(现在在移动设备上)所以我无法检查我的代码,但我认为使用普通的Java / Groovy约定会有很多帮助。