我有一个名为District的域名,我只会输入地区名称,而且工作正常。我有另一个名为Thana的域名,我需要将区域ID作为外键,因为区域下面有很多区域。我想将thana名称和区域ID保存为比表中的外键值。这就是我从组合addThana视图获取区ID的原因。但是当我分配给它给出错误的值时。有人可以帮我这个吗?以下是我的流程:
我的分区域>>
class District {
String districtName
static constraints = {
}
static mapping = {
table('district')
version(false)
}
}
my thana domain>>
class Thana {
String thanaName
District district
static constraints = {
}
static mapping = {
table('thana')
version(false)
district column: 'district_id'
}
}
我的保存方法>>
def saveThana(){
println(params)
Thana thana = new Thana()
thana.district = params.districtId
thana.thanaName = params.thanaName
thana.save()
}
和错误消息>>
消息: 参数类型不匹配
答案 0 :(得分:1)
那是因为params.districtId是String,你将它分配给类型为Region的属性。
所以你必须首先检索一个区的实例,你可以使用id:
thana.district = District.get(params.districtId?.toLong())
答案 1 :(得分:0)
原因是Thana Class想要一个District Object而不是一个district_id来保存District作为Thana Table的外键关系。
你应该更清楚地做些什么。
def saveThana(){
println(params)
try {
Thana thana = new Thana()
thana.district = District.findById(params?.districtId) //check nulls okay?
thana.thanaName = params?.thanaName.toString()
thana.save(failonSave:true)
}
catch(exception ex){
println ("Save Error":ex.getMessage());
}
}