Grails与静态映射表的关系
就我的一生而言,我似乎无法让关系在Grails映射表上工作。我想加入两个领域,资源和磁带。一个资源可以有许多磁带 如果我使用脚手架运行下面的代码,我会在“字段列表”中得到一个错误“未知列”this_u.caste_id”。如果我试图在映射中定义CASE_id,编译时会出现致命错误 任何明智的Grails向导都能让我走上正确的道路吗?我对这一点还不熟悉,并且已经尝试了我能找到的每一种方法使之有效Grails与静态映射表的关系,grails,mapping,join,gorm,Grails,Mapping,Join,Gorm,就我的一生而言,我似乎无法让关系在Grails映射表上工作。我想加入两个领域,资源和磁带。一个资源可以有许多磁带 如果我使用脚手架运行下面的代码,我会在“字段列表”中得到一个错误“未知列”this_u.caste_id”。如果我试图在映射中定义CASE_id,编译时会出现致命错误 任何明智的Grails向导都能让我走上正确的道路吗?我对这一点还不熟悉,并且已经尝试了我能找到的每一种方法使之有效 //resource definition package edu.place.project c
//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
隐式尝试在您的域上创建一个名为caste
的Set
(集合),但您已将其明确定义为caste
尝试卸下盒式磁带
,看看会发生什么。我认为你描述的模型不需要它
作为旁白,您也可以考虑将字段重命名为<代码>磁带盒,因为它是一个集合,而不是一个奇异对象。
在这些之后,您的域(无论如何,关系部分)可能如下所示:class Resource {
static hasMany = [cassettes: Cassette]
}
class Cassette {
Resource resource
static belongsTo = Resource
}
好的,现在可以加载资源域了,但是当我选择一个资源时,我遇到了一个新的错误:“异常消息:表'fortunoff.Resources\u ArchDescriptionInstances'不存在”ArchDescriptionInstances表就是由CASE表映射的表。如果我以前没有感到困惑的话,那么现在,由于您在两者之间设置了一个
hasMany
,Grails需要一个映射表来存储对象之间的关系。我以前从未尝试过这样做,所以我在这里可能帮不了什么忙。您可能必须在映射中显式声明联接表。但是,您尝试使用的数据库模型似乎有点不标准,因此我不确定它是否能正常工作。