我有两个域类:
class Domain1 {
String val11
String val12
Domain2 domain2
static constraints = {
}
}
class Domain1Controller{
/**
* Create new Domain1 entity instance
*/
def create = {
def domain1 = new Domain1()
def domain2 = Domain2.get(params.domain2)
if(domain2!=null){
domain1.domain2 = domain2
}
domain1.properties=params
domain1.save(flush: true)
String strJson = (domain1 as JSON)
render strJson
}
/**
* Update Domain1 entity fields values
*/
def update = {
Domain1 domain1 = Domain1.findById(params.id)
params.remove("id")
if (domain1 != null) {
domain1.properties=params
domain1.save(flush:true)
String strJson = (domain1 as JSON)
render strJson
}
}
}
class Domain2 {
String val21
String val22
static constraints = {
}
}
class Domain2Controller{
/**
* Create new Domain2 entity instance
*/
def create = {
def domain2 = new Domain2()
domain2.properties=params
domain2.save(flush:true)
String strJson = (domain2 as JSON)
render strJson
}
/**
* Update Domain2 entity fields values
*/
def update = {
Domain2 domain2 = Domain2.findById(params.id)
params.remove("id")
if (domain2 != null) {
domain2.properties=params
domain2.save(flush: true)
String strJson = (domain2 as JSON)
render strJson
}
}
}
我的问题是当我创建关联对象时,无法更新domain1。
我认为原因可能是
save()
方法...也许不是有谁知道为什么我无法更新Domain1属性?
我使用grails-1.3.2和hbase-0.2.4插件。
附言hbase不了解映射。
感谢帮助。
最佳答案
考虑到您在注释中提供的异常,我认为问题在于您调用domain1.properties=params
的行。域属性映射包含一些特定的键,当您为其分配params
映射时,这些特定的键(即此处的class
属性)丢失了,因此GORM无法访问它们。
使用bind()方法通过以下方式将参数值绑定(bind)到您的域对象:
def domain1 = new Domain1()
bind(domain1, params)
def domain2 = Domain2.get(params.domain2)
if(domain2!=null){
domain1.domain2 = domain2
}
domain1.save(flush: true)
关于grails - 更新单向一对一问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5978988/