あなたはこの作業を行うにはtransient propertiesと追加のテーブル「ブックマーク」を使用することができます。
class Employee {
String name
static transients = ["bookmarks"]
def getBookmarks() {
Bookmark.findAllByBookmarker(this, [sort: "id", order: "asc"])
}
...
}
class Bookmark implements Serializable {
Employee bookmarker // the employee who bookmark someone
Employee bookmarkee // the employee who is bookmarked
static mapping = {
table "Bookmark"
id composite: ['bookmarker', 'bookmarkee']
bookmarker(column: "BOOKMARKER_ID")
bookmarkee(column: "BOOKMARKEE_ID")
version false
}
static Bookmarker get(long bookmarkerId, long bookmarkeeId) {
find 'from Bookmark where bookmarker.id=:bookmarkerId and bookmarkee.id=:bookmarkeeId',
[bookmarkerId: bookmarkerId, bookmarkeeId: bookmarkeeId]
}
...
}
このメソッドは、テーブルを使用しています従業員の関係を保存するための「ブックマーク」は、2人で同じ従業員をブックマークすることも可能です。クラスBookmarkはSerializableを実装する必要があることに注意してください。
複数の従業員が同じ従業員をブックマークすることを許可しますか?つまり、「employeeA」と「employeeB」の両方が「employeeC」にブックマークされている。 –
はい - このモデルでは、関連ユーザーを格納するための結合表が作成されるため、複数の参照に制限はありません。 –