2010-10-29 14 views
5

bir belongsTo ilişkisini içeren grails Kriterleri sorgu oluşturulamaz.Bir belongsTo ilişkisini içeren bir kriter oluşturucu yaratmaya çalıştığını ve henüz başarılı oldum

class Msg { 
    ... 
    static belongsTo = [user: User] 
    ... 
} 

class User { 
    ... 
    Organisation organisation 
    ... 
} 

aşağıdaki sorguyu yapmaya çalışıyorum:

Msg.createCriteria().list() { 
    ... 
    user { 
     eq("organisation", organisationInstance) 
    } 
    ... 
} 

alıyorum tek şey denedim

ERROR errors.GrailsExceptionResolver - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [[email protected]] 
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map) 

aşağıdaki hata aşağıdaki modeli düşünün gibi kriterler sorguya farklı küçük eklenen ekleyin:

join "user" 
fetchMode("user", org.hibernate.FetchMode.EAGER) 

Ama yine de aynı problemi olsun.

Hatta Msg sınıfa aşağıdaki statik eşlemesi eklemek çalıştı:

static mapping = { 
    columns { 
     user lazy: false 
    } 
} 

Hâlâ çalışmıyor.

hiç de belongsTo sorgusu içeren kriterleri oluşturucu kullanmak için bir yolu var mı? peşin Yardımlarınız için

teşekkürler.
Lucien

cevap

5

Ben çözüm bulduk! Sorun, kriter oluşturucu ile ilgili değildi. Bu örnekte, kapsam içinde bir kullanıcı değişkeni vardı. Bir kaldırmasıyla kez yukarıdaki örnekten Ne fark

+0

Kafamı uzun süre boyunca becermeye başladım. Hata, bu konuyla ilgili herhangi bir ipucu vermedi. Paylaşım için teşekkürler –

2
def criteria = Msg.createCriteria() 
results = criteria.list{ 
    user{ 
     eq("organisation", organisationInstance) 
    } 
} 
+0

:-) bir cazibe gibi çalışır? –

+0

createCritia ifadenizde yanlış görünüyor, eksik "()" –

+0

Üzgünüm, yanlış yazım yaptım. Elbette bir "()" içermelidir. Düzeltme. –