gpt4 book ai didi

sql - 没有外键的GORM一对多关系

转载 作者:行者123 更新时间:2023-12-04 23:52:13 27 4
gpt4 key购买 nike

我已经尝试了一段时间以了解GORM的工作原理,但我认为我对此有所了解。但是,我很难过正确的人际关系。

这是我的数据库架构设置(2个表):

表-用户

userhash varchar(255)
firstname varchar(255)
lastname varchar(255)

表-记录
userhash varchar(255)
accessdate date

表中没有定义外键和主键约束。但是,在用户表中,用户哈希将是唯一的。我不是这样设计的,但是我必须像这样使用它。

现在对于我的Grails域类:

类-用户
class Users {

String userhash;
String firstname;
String lastname;

static hasMany = [logs: Logs]

}

类-记录
class Logs {

String userhash;
Date accessdate;

static belongsTo = Users;

}

在我的 Controller 中,执行以下操作:
def user = Users.findByUserhash("nraboy");
println user.firstname;
println user.logs;

它会打印出正确的名字,但是当我尝试显示日志时,它为null或为空。我是否为子表错误地请求数据,还是在域类设计中缺少某些地方?

我尝试执行以下操作,但现在也很幸运:

类-记录
static mapping = {
id generator: "assigned", name: "userhash", type: "string"
}

类-用户
static mapping = {
userhash generator: "foreign"
}

我认为以上内容使我可以通过代码手动定义主键和外键,因为它们在表中不存在。虽然没有运气。

任何帮助,将不胜感激。

谢谢,

最佳答案

看起来您可能需要在Users中进行某些操作以使日志关联强制外键原样位于Logs表中。请参见GORM docs一对多映射部分。也许像这样:

static hasMany = [logs: Logs]

static mapping = {
logs column: 'userhash'
}

我很想知道这是否有效...

关于sql - 没有外键的GORM一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065989/

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