0
我有一個ClientAttribute域類,有2個字段:name (String)
& project (Project)
。 Project
和ClientAttribute
之間存在一對多關係在單個項目中,所有名稱都必須是唯一的。如何在Grails中使用自定義驗證器來正確檢查字段唯一性?
起初我以爲關於創建以下驗證:
name(blank: false, validator: { val, obj ->
if (ClientAttribute.findByProjectAndName(obj.project, val)) return ['clientAttribute.name.unique']
})
不幸的是,ClientAttribute
創建新實例時我通過增加新的實例,以項目實例clientAttributes
場和保存項目實例做。這又保存了集合clientAttributes
中剩餘的對象。當在集合中保存第二個對象時,驗證器被觸發,並且會引發錯誤,因爲findBy()
方法返回相同的對象。
我想知道,執行這種檢查的正確方法是什麼? 我可以修改查詢不返回與當前保存的相同的對象,但我想知道是否沒有簡單的解決方案來解決我的問題?
感謝
我不知道爲什麼我認爲該字段是布爾值只。該死!謝謝大衛! – Krystian