我的两个域类(User
和Post
)之间有多个一对多关联。 User
可能喜欢,不喜欢,看到或拥有多个Post
。为此我设置了hasMany关系如下:
static hasMany = [posts:Post, seen:Post, likes:Post, dislikes:Post]
在我开始使用seen
后开发代码的拥有方后,我发现posts
列表中的每个对象也位于seen
,likes
中dislikes
。然后我尝试使用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
的帖子也会转到其他列表。我做错了什么?
答案 0 :(得分:1)
在尝试了很多mappedBy
和mapping
之后,我决定创建单独的域(实际上具有相同的属性),以保持喜欢,不喜欢和看到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()
也许这对其他人来说并不完美,但解决了我的问题