Учитывая следующие два домена:
class Follows {
User followee
...
static belongsTo = [follower: User]
}
class User {
String name
String lastName
...
static hasMany = [ follows: Follows ]
static mappedBy = [ follows: 'follower' ]
}
Что создает следующую таблицу:
+------+-------------+-------------+
| id | follower_id | followee_id |
+------+-------------+-------------+
| 1 | 1 | 3 |
| 2 | 3 | 2 |
| 3 | 2 | 1 |
+------+-------------+-------------+
Есть ли способ через ограничения предотвратить дублирование follower - followee? Я пытаюсь предотвратить оба направления, например, идентификатор пользователя 3 не должен иметь возможность подписываться на идентификатор пользователя 1, если идентификатор пользователя 1 уже подписан на идентификатор пользователя 3.
Другими словами, я пытаюсь предотвратить следующее:
+------+-------------+-------------+
| id | follower_id | followee_id |
+------+-------------+-------------+
| 1 | 1 | 3 |
| 2 | 3 | 1 |
+------+-------------+-------------+
Я знаю, что могу запросить базу данных перед вставкой, чтобы проверить, следует ли пользователь 1 за 3 (или наоборот), и если true отменить вставку, но я пытаюсь избежать попадания в БД дважды за follow операция.
Привет и спасибо за все ваши ответы!