2013-08-14 13 views
5

gömülü nesne üzerinde sorgu: Aşağıdaki özel durum almakgorm nerede aşağıdaki gibi Etki alanı sınıfları A ve B var

def q = A.where { prop3.prop4 == 'bla' } 
def list = q.list() 

:

class A { 
    String prop1 
    String prop2 
    B prop3 

    static embedded = ['prop3'] 
} 

class B { 
    String prop4 
    String prop5 
} 

Böyle sorgulamak istediğinizde

"Def q = A.where ..." satırında

.

Sorun nedir? Bu kontrol ettim:

http://grails.1312388.n4.nabble.com/GORM-embedded-object-issue-td1379137.html

ama nasıl "sadece onları doğrudan çağrı" bana oldukça açık değildir. GORM'de gömülü nesneleri sorgulamanın başka bir yolu var mı? Eğer yoksa sen alabilirim ne

cevap

0

def q = A.where { prop3 == new B(prop4: 'bla') } 
def list = q.list() 

Gömülü bileşenleri ana etki alanı sınıfı (sahibi) nun içine kalıcı olan (B varsayarak src/groovy içindedir). Doğrudan bir alan nesnesinde yaptığınız gibi herhangi bir dinamik bulucu kullanılarak doğrudan erişilebilir.

yukarıda

da dinamik bulma temsil edilebilir:

A.findAllByProp3(new B(prop4: 'bla')) 
+0

Çalışmıyor - ayrıştırmıyor, ancak sıfır sonuç aldım. Muhtemelen prop5 eksik olduğu için (ki bunu bilmiyorum ve filtreleyemiyorum). Başka önerileriniz var mı? Ayrıca, prop3'te "IN" sorgusu nasıl yapılır? –

4

Sonunda nereye sorguyu vazgeçti ve DetachedCriteria yaklaşımıyla gitti. Bana, sorguları ile aynı esnekliği verir, ancak katıştırılmış etki alanı nesneleriyle çalışır:

+1

Daha basit bir yanıt, '' '' A.findAll {eq 'prop3.prop4', 'bla'} '' ' – Faraway

+0

olabilir. Hazırda bekletme paketindeki grails.gorm.DetachedCriteria kullandığınızdan emin olun. – Neoecos

İlgili konular