Grails多个单向一对多无法正常工作

时间:2012-09-02 11:00:00

标签: grails gorm one-to-many

我的两个域类(UserPost)之间有多个一对多关联。 User可能喜欢,不喜欢,看到或拥有多个Post。为此我设置了hasMany关系如下:

static hasMany = [posts:Post, seen:Post, likes:Post, dislikes:Post]

在我开始使用seen后开发代码的拥有方后,我发现posts列表中的每个对象也位于seenlikesdislikes。然后我尝试使用joinTable映射表:

static mapping = {
    posts joinTable: [name: 'USER_POSTS',
        column: 'POST_ID',
        key: 'USER_ID']
    seen joinTable: [name: 'USER_SEEN',
        column: 'POST_ID',
        key: 'USER_ID']
    likes joinTable: [name: 'USER_LIKES',
        column: 'POST_ID',
        key: 'USER_ID']
    dislikes joinTable: [name: 'USER_DISLIKES',
        column: 'POST_ID',
        key: 'USER_ID']
}

但遗憾的是,没有任何变化,添加到posts的帖子也会转到其他列表。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在尝试了很多mappedBymapping之后,我决定创建单独的域(实际上具有相同的属性),以保持喜欢,不喜欢和看到User和{{1}之间的联系}}。实际上我的解决方案不是基于关系的,它是一种User-Post活动的日志。

Post

当我想class UserLike { static belongsTo = [user:User,post:Post] } class UserDislike { static belongsTo = [user:User,post:Post] } class UserSee { static belongsTo = [user:User,post:Post] } post1喜欢user1时,我会这样做:

new UserLike(user:user1,post:post1).save()

也许这对其他人来说并不完美,但解决了我的问题