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

就我的一生而言,我似乎无法让关系在Grails映射表上工作。我想加入两个领域,资源和磁带。一个资源可以有许多磁带

如果我使用脚手架运行下面的代码,我会在“字段列表”中得到一个错误“未知列”this_u.caste_id”。如果我试图在映射中定义CASE_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)
     }
}

可能是因为你有:

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需要一个映射表来存储对象之间的关系。我以前从未尝试过这样做,所以我在这里可能帮不了什么忙。您可能必须在映射中显式声明联接表。但是,您尝试使用的数据库模型似乎有点不标准,因此我不确定它是否能正常工作。