2012-05-18 193 views
2

我遇到了一个应处理一对多和多对多关系的两个实体的问题。让我来向你展示一下情况:有用户创建并参与一些活动。所以一个活动可以有几个用户,只有一个活动创建者,同时用户可以创建并且属于许多活动。两个类之间的一对多和多对多的关系? (Grails ORM)

所以我做了这样的事情:

class User { 

    static hasMany = [activities:Activity, activitiesCreated: Activity] 
    static mappedBy = [activitiesCreated: "creator"] 
... 
} 

class Activity{ 

    static hasMany = [users:User] 
    static belongsTo = [users:User] 
    Usuario creator 
... 
} 

这就提出了一个运行时异常,这是这一个: 在域类[类用户]和[课外活动]之间没有定义所有者多对多多种关系。例如:static belongsTo = Activity

如果我不试图实现一对多,多对多关系可以正常工作,所以它不会成为问题。

而这正是我坚持:/

回答

4

我不得不第三个实体,实现多对多的关系。例如,假设将活动的实际执行表示为事件,这意味着事件具有一个或多个活动,时间戳/时间范围以及一个或多个参与用户。用户可以创建一个或多个活动,同样,活动的所有者将被视为拥有该活动。

+0

那么,这当然可以完成这项工作!现在已经太晚了(这里几乎是午夜),所以我想明天我会试一试。谢谢! –

+1

@PainyJames你甚至可以在第三个实体中声明一些辅助方法,使它看起来更像你在帖子中定义的内容。检查[这个答案](http://stackoverflow.com/a/9783231/760721) – Antoine