在我的一生中,我似乎无法使用 Grails 在映射表上建立关系。我有两个要加入的域,Resources 和 Cassettes。一个 Resource 可以有许多 Cassettes。
如果我使用脚手架运行下面的代码,我会收到错误“'字段列表'中的未知列'this_.cassette_id'”。如果我尝试在映射中定义cassette_id,我会在编译时遇到 fatal error 。
任何明智的 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)
}
}
请您参考如下方法:
这可能是因为你有:
class Resource {
Cassette cassette
static hasMany = [cassette: Cassette]
}
这两个定义相互冲突。
hasMany隐式尝试创建一个
Set (收藏)叫
cassette在您的域上,但您已明确将其定义为
Cassette .
尝试删除
Cassette cassette看看会发生什么。我认为您描述的模型不需要它。
顺便说一句,您还可以考虑将字段重命名为
cassettes因为它是一个集合,而不是一个单一的对象。
在这些之后,您的域(无论如何,关系部分)可能如下所示:
class Resource {
static hasMany = [cassettes: Cassette]
}
class Cassette {
Resource resource
static belongsTo = Resource
}




