0
鑑於以下兩個領域:的Grails GORM約束
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 |
+------+-------------+-------------+
是否有通過約束上辦法阻止跟隨的副本 - 關注者?我正在試圖防止兩個方向,比如,用戶ID 3應該不能遵循用戶ID 1如果用戶ID 1已經按照用戶ID 3.
換句話說,這是我正在試圖防止:
+------+-------------+-------------+
| id | follower_id | followee_id |
+------+-------------+-------------+
| 1 | 1 | 3 |
| 2 | 3 | 1 |
+------+-------------+-------------+
我知道,我也許可以在插入之前查詢數據庫來檢查,如果用戶1是繼3(或者反過來),如果真的取消插入,但我試圖避免按按照的操作打兩次DB。
乾杯和感謝您的所有答案!
儘管像約束用法這樣更優雅的解決方案會非常棒,但您的解決方案非常簡單明瞭。真棒回答!乾杯! – mradzinski
不客氣。順便說一句,我的解決方案確實使用約束看例子中的約束閉包。 –
是的,我指的是一個簡單的約束,以防止在兩個方向重複,而不是使用散列。順便說一句,我測試了它,它完美的作品。 – mradzinski