1

私のドメイン クラスの 2 つ (UserPost) は、それらの間に複数の 1 対多の関連付けがあります。User複数の を好き、嫌い、見る、または所有する可能性がありPostます。このために、次のように hasMany 関係を設定しました。

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

作業を開始したときに自分のコードの所有側を開発した後、リストseenにある各オブジェクトが、およびにもあることがわかりました。次に、 joinTable を使用してテーブルをマップしようとしました:postsseenlikesdislikes

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引き続き他のリストにも移動します。私は何を間違っていますか?

4

1 に答える 1

1

多くのことを試した後mappedBymapping私は別々のドメイン(実際には同じプロパティを持つ)を作成して、との間の接続を好き、嫌い、そして見続けることにしましUserPost。実際、私のソリューションは関係ベースではなく、ユーザー投稿アクティビティの一種のログです。

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()

多分それは他の人にとって完璧ではありませんが私の問題を解決しました

于 2012-09-03T21:08:07.773 に答える