在我的一生中,我似乎不能使用Grails在映射表上处理关系。我有两个领域,我试图加入,资源和磁带。一个资源可以有许多盒式磁带。
如果我使用脚手架运行下面的代码,我会得到一个错误“未知的列'this_.cassette_id‘in 'field list'”。如果我试图在映射中定义cassette_id,我会在编译时得到一个致命错误。
任何明智的Grails向导能让我走上正确的道路吗?我是个新手,我已经尝试过我能找到的每一种方法来使它有效。
//resource definition
package edu.place.project
class Resource {
String title
String number
String type
Cassette cassette
static hasMany = [cassette : Cassette ]
static mappedBy = [cassette : "hvt"]
static mapping = {
table "Resources"
version false
columns {
id column : "resourceIdentifier2"
title column: "title"
number column: "extentNumber"
type column: "extentType"
}
}
static constraints = {
}
}
//Cassette definition
package edu.place.project
class Cassette {
String id
String type
String numCode
String hvt
static belongsTo = Resource
static mapping = {
table "ArchDescriptionInstances"
version false
columns {
id column : "barcode", type : String
type column : "userDefinedString2"
numCode column : "container1AlphaNumIndicator"
hvt column : "userDefinedString1"
}
}
static constraints = {
barcode(unique : true)
}
}发布于 2010-09-22 22:11:54
这可能是因为你有:
class Resource {
Cassette cassette
static hasMany = [cassette: Cassette]
}这两个定义相互冲突。hasMany隐式地尝试在您的域上创建一个名为cassette的Set (集合),但是您已经显式地将其定义为一个Cassette。
尝试删除Cassette cassette,看看会发生什么情况。我不认为你所描述的模型需要它。
顺便说一句,您还可以考虑将字段重命名为cassettes,因为它是一个集合,而不是一个单一对象。
在这些之后,您的域(至少是关系部分)可能如下所示:
class Resource {
static hasMany = [cassettes: Cassette]
}
class Cassette {
Resource resource
static belongsTo = Resource
}https://stackoverflow.com/questions/3769950
复制相似问题