İki etki alanı sınıfı var CGroup ve Directory, Çok sayıda Dizin bulunan bir CGroup modellemek istiyorum, ancak bu birçok dizinden biri "root" olarak bilinir ve doğrudan CGroup'dan erişilebilir. Herhangi bir CGroup'un yalnızca bir kökü olmalıdır ve kaskadlar, herhangi bir dizinin silinmesinin tüm çocuklarını sileceği şekilde çalışmalıdır. Yanlış rağmenGORM örneğin bir hasMany ilişkisinde GORM doğrudan erişim
, bu şimdiye kadar ne var:
class CGroup{
...
Directory root
static hasMany = [directory:Directory]
static constraints = {
root(unique:true)
}
}
class Directory {
static hasMany = [children:Directory]
...
static belongsTo = [parent:Directory,
cgroup:CGroup]
static constraints = {
parent nullable: true
}
}
temelde, sadece "bir" tarafında saklanan "çok" koleksiyonundan bir örneği başvurusu, ihtiyaç
Evet! tam olarak aradığım şey buydu, belirttiğiniz sipariş sorunu tam olarak karşılaştığım sorundu ama ben özel validators ile çok aşina değildim. Ayrıca, oldukça yaygın bir senaryo gibi göründüğünden belli bir şeyi kaçırmış olabileceğimi düşündüm. Bir şey, son kod bloğunuzda ikinci addToDirectory aslında setRoot için bir çağrı olmamalıdır? Alkışlar – Alexjjsmith
Hayır, kök önce ayarlanır ve ardından toplam 3 için iki ek örnek eklenir. Sipariş, ikinci kez kaydetme() işlevini çağırdığınız sürece önemli değildir, kök ayarlanır ve bu örnekte bulunur. hasMany, isteğe bağlı olarak bazı ek örneklerle birlikte. –