2010-09-22 120 views
1

对我的生活中的关系,我似乎无法得到关系,与Grails的映射表工作。我有两个域,我试图加入,资源和磁带。一个资源可以有许多盒子。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) 
    } 
} 

回答

2

这可能是因为你有:

class Resource { 
    Cassette cassette 
    static hasMany = [cassette: Cassette] 
} 

这两个定义互相冲突。 hasMany隐式地尝试在您的域上创建名为cassetteSet(集合),但您已明确将其定义为Cassette

尝试取出Cassette cassette看看会发生什么。我不认为你需要它为你描述的模型。

另外,您也可以考虑将字段重命名为cassettes,因为它是一个集合,而不是单个对象。

这些后,你的域(的关系部分,反正)可能是这样的:

class Resource { 
    static hasMany = [cassettes: Cassette] 
} 

class Cassette { 
    Resource resource 
    static belongsTo = Resource 
} 
+0

好了,这工作,在资源领域的负荷了,但是当我选择一个资源,我面临着一个新的错误:“异常消息:表‘fortunoff.Resources_ArchDescriptionInstances’不存在”的ArchDescriptionInstances表表由盒表映射。如果我现在还没有感到困惑。 – awfulHack 2010-09-22 14:44:50

+1

既然你已经设置了'hasMany'两者之间,需要的Grails的映射表来存储对象之间的关系。我以前没有尝试过这样做,所以我可能在这里没有太多帮助。您可能不得不在映射中明确声明连接表。但是,您尝试使用的数据库模型看起来有点不标准,所以我不确定它将如何工作。 http://www.grails.org/doc/latest/ref/Database%20Mapping/joinTable.html – 2010-09-22 17:01:24