多对多GSP持久性



员工和职位之间存在多对多关系。有人能告诉我如何实现增加员工的职位吗?控制器和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。

这两篇博客文章与您的问题密切相关。

它们都详细介绍了不同的例子,并且非常容易理解。

相关内容

  • 没有找到相关文章

最新更新