对于我的生活,我似乎无法通过Grails获得与映射表相关的关系。我有两个我想加入的域名,资源和盒式磁带。资源可以有很多盒式磁带。
如果我使用脚手架运行下面的代码,我会在“字段列表”中收到错误“未知列'this_.cassette_id'”。如果我尝试在映射中定义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)
}
}
答案 0 :(得分:2)
这可能是因为你有:
class Resource {
Cassette cassette
static hasMany = [cassette: Cassette]
}
这两个定义相互冲突。 hasMany
隐式尝试在您的域中创建名为Set
的{{1}}(集合),但您已明确将其定义为cassette
。
尝试删除Cassette
,看看会发生什么。我认为你所描述的模型并不需要它。
顺便说一下,你也可以考虑将字段重命名为Cassette cassette
,因为它是一个集合,而不是一个单一的对象。
在这些之后,您的域名(关系部分,无论如何)可能如下所示:
cassettes