我在员工和职位之间有多对多的关系。有人可以告诉我如何实施向员工添加职位吗?控制器和GSP到。我想在创建和更新emloyee GSP时实现这一点。 在员工create.gsp上,我想要输入用于输入员工姓名的文本字段,以及具有现有职位的组合框。此外,我想要添加位置按钮,这将呈现另一个组合框以添加更多位置。 对于我来说,作为一个绝对的开始,这并不是那么明显,并且没有很多关于此的例子。 有一个具体的例子会很有意思。
答案 0 :(得分:0)
这些博文one-to-many-relationships-in-grails-forms和grails-one-to-many-dynamic-forms与您的问题密切相关。
他们都详述了不同的例子,并且很容易理解。
答案 1 :(得分:0)
老实说,stackoverflow适用于q& a,而不是“为我做这个”。
关于如何映射多对多的问题是有效的,一种非常常见的方法是只需要一个包含两种关系的连接表。
您可以通过反向工程来适应您的类的示例是来自spring-security-core的UserRole类。
class UserRole implements Serializable {
User user
Role role
static UserRole get(long userId, long roleId) {
find 'from UserRole where user.id=:userId and role.id=:roleId',
[userId: userId, roleId: roleId]
}
static UserRole create(User user, Role role, boolean flush = false) {
new UserRole(user: user, role: role).save(flush: flush, insert: true)
}
static boolean remove(User user, Role role, boolean flush = false) {
UserRole instance = UserRole.findByUserAndRole(user, role)
if (!instance) {
return false
}
instance.delete(flush: flush)
true
}
static void removeAll(User user) {
executeUpdate 'DELETE FROM UserRole WHERE user=:user', [user: user]
}
static void removeAll(Role role) {
executeUpdate 'DELETE FROM UserRole WHERE role=:role', [role: role]
}
static mapping = {
id composite: ['role', 'user']
version false
}
}
删除了一些辅助内容,例如哈希码和克隆等。
基本思想是拥有一个包含两个类ID的连接表。