员工和职位之间存在多对多关系。有人能告诉我如何实现增加员工的职位吗?控制器和GSP到。我想在创建和更新员工gsp上实现这一点。关于员工创建。gsp我想有输入员工姓名的文本框和现有位置的组合框。另外,我想有添加位置按钮,这将渲染另一个组合框添加更多的位置。对我来说,作为一个绝对的乞丐,这并不是那么明显,也没有很多关于这方面的例子。如果能有一个具体的例子就好了。
老实说,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。
这两篇博客文章与您的问题密切相关。
它们都详细介绍了不同的例子,并且非常容易理解。