我已经尝试了一段时间来了解GORM是如何工作的,我想我已经把它搞定了。但是,我有一段时间让我的关系正确。
这是我的数据库架构设置(2个表):
表格 - 用户
userhash varchar(255)
firstname varchar(255)
lastname varchar(255)
表格 - 日志
userhash varchar(255)
accessdate date
表中没有定义外键和主键约束。但是,在users表中,userhash将是唯一的。我没有这样设计,但我必须像这样使用它。
现在我的Grails域类:
类 - 用户
class Users {
String userhash;
String firstname;
String lastname;
static hasMany = [logs: Logs]
}
类 - 日志
class Logs {
String userhash;
Date accessdate;
static belongsTo = Users;
}
在我的控制器中,我执行以下操作:
def user = Users.findByUserhash("nraboy");
println user.firstname;
println user.logs;
它打印出正确的名字,但是当我尝试显示日志时,它为空或空。我是否正确地为子表请求数据,或者我在域类设计中的某处丢失了某些内容?
我试图做以下事情,但现在也运气好了:
类 - 日志
static mapping = {
id generator: "assigned", name: "userhash", type: "string"
}
类 - 用户
static mapping = {
userhash generator: "foreign"
}
我认为上面的内容可以让我通过代码手动定义主键和外键,因为它并不存在于表中。虽然没有运气。
任何帮助都将不胜感激。
谢谢,
答案 0 :(得分:0)
看起来您可能需要在Users中为日志关联执行某些操作,以强制外键按原样位于Logs表中。请参阅GORM docs一对多映射部分。也许是这样的事情:
static hasMany = [logs: Logs]
static mapping = {
logs column: 'userhash'
}
我很想知道这是否有效......