首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在grails中使用GORM进行领域建模,如何表示关联

在grails中使用GORM进行领域建模,如何表示关联
EN

Stack Overflow用户
提问于 2015-10-20 12:22:45
回答 1查看 44关注 0票数 0

我正在学习grails,我想出了一个用例。在我的用例中,一个产品有很多用户,每个用户可以有很多角色。

下面是我的产品类:

代码语言:javascript
运行
复制
class Product {

    String name
    String description
    String vision
    Date startDate
    Date endDate

    static hasMany = [users : User, contributors : User, watchers : User, approvers : User]
    static belongsTo = User

    static constraints = {
    }
}

下面是我的User类:

代码语言:javascript
运行
复制
class User {

    static constraints = {
    }

    String fullName
    String email

    static hasMany = [roles : Roles, products : Product]
}

下面是角色枚举:

代码语言:javascript
运行
复制
public enum Roles {
    PRODUCTOWNER ('ProductOwner'),
    APPROVER ('Approver'),
    CONTRIBUTOR ('Contributor'),
    WATCHER ('Watcher')
}

我的问题特别是关于产品和用户之间的关联。我想说明这样一个事实:一个产品可以有许多不同角色的用户。此外,每个用户可以是多个产品的一部分,在每个产品中具有不同的角色。这是表达这种关系的正确方式吗?此外,我应该能够删除和添加用户到产品,反之亦然。这也意味着,用户可以在不同的角色之间移动,并可以进出产品。在这种情况下,我可能不希望级联发生。如何防止此关系的CRUD操作发生自动级联?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 15:35:49

我认为,与其在User.groovy中拥有角色和产品,不如像UserProductRole那样创建一个单独的域。正如你所说,用户在不同的产品中会有不同的角色,那么创建一个单独的域在业务用例和查询中更有意义

代码语言:javascript
运行
复制
class UserProductRole{

    Role role

    static belongsTo = [user:User,product:Product]

    static constraints = {
        user (unique:['product','role']
    }
} 

您可以创建组合键,但我通常不喜欢这样做,因为它会使查询变得有点困难。

现在您需要更改User和Product中的hasMany,如下所示

userProducts:UserProductRole,而不是拥有用户或产品

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33227958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档