gpt4 book ai didi

Grails GORM : How do I create a composite primary key and use it for a table relationship?

转载 作者:行者123 更新时间:2023-12-02 05:51:21 59 4
gpt4 key购买 nike

我有两个表,其中一个(遗留表:A)有两个字段应该用作复合外键,另一个(新表:B)应该使用一个复合主键作为一个 row:A 有一个 row:B 关系。如何用 GORM 描述这些表?

到目前为止,我已经能够创建一个反射(reflect)遗留表的域类:A

class A {

...
//composite foreign key to link B class
String className;
String eventName;

B b; //instance of B to be related

static mapping = {
table 'a_table';
id column: 'id';
className column: 'class_name';
eventName column: 'event_name';
//b: ???
}
}

这可行,但我无法创建 new class:B 和关系。

我试图将 B 声明为:

class B implements Serializable{

static auditable = true;

String name;
String className;
String eventName;

static mapping = {
//supposed to make a composite PK
id composite:[className, eventName]
}
}

但这不会编译
错误 context.GrailsContextLoader - 执行 Bootstrap 时出错:评估域 [com.package.B] 的 ORM 映射 block 时出错:没有此类属性:类的事件名称:org.codehaus.groovy.grails.orm.hibernate.cfg.HibernateMappingBuilder

我想要的是这样的:

static mapping = {
...
b composite: [b.className:className, b.eventName:eventName]
//or whatever is the right way for this to be done.
}

让 A 类让 GORM 处理这个关系。

最佳答案

您是否尝试使用属性名称而不是使用属性值?

class B implements Serializable{
String name;
String className;
String eventName;

static mapping = {
//supposed to make a composite PK
id composite:['className', 'eventName']
}
}

A 中的映射:

class A {
static hasMany = [ b : B ]
}

A 中不需要classNameeventName

关于Grails GORM : How do I create a composite primary key and use it for a table relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729629/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com