grails 设置一对多(hasMany belongsTo)级联关系

Grails 是内嵌 Hibernate 来进行数据库交互的,级联关系也和 Hibernate 设置一致。常见情形在官方文档里已做了详细介绍,这里讨论的是一对多,而且 “一” 这一方的主键需要指定特定 column 的情形。一对一和 多对多 可以以此类推。有两个表

officer:用户表(由于历史等特殊原因命名此表),主键 user_id

group_user:用户和用户组关系表,主键 group_id + user_id

domain class 如下所示:

class Officer {

	String userId

	static mapping = {
		id name: "userId", generator: "assigned"
		version false
	}
}

class GroupUser {

	String groupId
	String userId

	static mapping = {
		id composite: ["groupId", "userId"]
		version false
	}
}


添加 级联关系后如下所示:


class Officer {

	String userId

	static hasMany = [GroupUsers: GroupUser]

	static mapping = {
		id name: "userId", generator: "assigned"
		version false
		GroupUsers lazy: false
	}
}

class GroupUser {

	String groupId
	String userId
	Officer officer

	static belongsTo = [officer: Officer]

	static mapping = {
		id composite: ["groupId", "userId"]
		version false
		officer column: "user_id" // 指定主键列
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值