2011-11-25 72 views
0

我在员工和职位之间有多对多的关系。有人能告诉我如何实施给员工增加职位吗?控制器和GSP。我想在创建和更新emloyee GSP时实现此目的。 关于员工create.gsp我想要有用于输入员工姓名的文本框,以及与现有职位相结合的组合框。另外我想要添加位置按钮,它将渲染另一个组合框以添加更多位置。 对于我来说,作为一个绝对的先行者,这并不是那么明显,关于这一点的例子并不多。 这将是一个具体的例子。多对多GSP持久性

回答

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连接表。

+0

这篇文章在这里给出了更详细的解决方案:http://grails.org/Many-to-Many+Mapping+without+Hibernate+XML –