有谁能告诉我如何在Grails中加入表格?我需要语法方面的帮助。
假设我有三个表,并且没有任何明确定义的外键约束:
EMPLOYEE:
empid
name
emp_deptid
emp_teamid
title
salary
hiredate
DEPT:
dept_deptid
deptname
location
size
numOfTeams
TEAM:
team_teamid
teamname
team_deptid
responsibility
size
我想在TEAMID和DEPTID上加入EMPLOYEE和TEAM。我知道如何在SQL查询中连接表。我真的想知道如何在Grails中进行表连接(在这些选定的列上使用OnetoOne,OnetoMany,hasMapped等)。感谢
修改
Class Emp(){
String empid
String teamid
String deptid
.....
.....
Date hiredate
Team team
static mapping = {
....
....
deptid column:'emp_deptid'
teamid column:'emp_teamid'
.....
.....
team column: ['teamid', 'deptid']
}
}
Class Team(){
...
...
String teamid
String deptid
static mapping ={
...
deptid column:'team_deptid'
teamid column:'team_teamid'
....
}
}
答案 0 :(得分:2)
GORM doc section 5.4.1 and 5.4.2中有2个小节,均名为“查询关联”。
修改强>
突然之间,这并不容易 - 抱歉是不专心。
Grails正式支持syntax for only compound primary keys,而不是外国人。我在Grails中发现了一堆关于复合外键的问题:GRAILS-4606和GRAILS-4256。
我可以提出可行的方法,但我自己没有测试过。
“列列表”语法(样本取自GRAILS-4256):
class Employee {
Team team
static mapping = {
// ... column mapping
team column: [team_id, dept_id]
}
}
Lauro Becker使用custom configuration class添加了复合外键映射语法 - 这看起来对他有用。
有些人甚至用一个关键字段创建可更新的数据库视图,并将域映射到它们,而不是原始表 - 但我认为这是一种过度杀伤。
答案 1 :(得分:0)
有很多方法可以查询和加入grails。这是一个简单的方法来做两个表的SQL连接的一个例子:
class Dept {
...
}
class Team {
...
Dept dept
}
Team.list(fetch: [dept: 'eager'])