2010-11-12 18 views
14

Eşleme ifadesini kullanarak benim hasMany özniteliğimi varsayılan olarak ayarlamaya çalışıyorum. Mezuniyet doktorunu takip ediyorum ama benim için işe yaramıyor (1.3.5).Grails varsayılan "hasMany" etki alanı öznitelikleri

... 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'notes0_.sendDate' in 'order clause' 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
     at com.mysql.jdbc.Util.getInstance(Util.java:384) 
... 

benim kodunda herhangi bir hata görüyor musunuz:

class Note { 
    Calendar sendDate 
    static belongsTo = Message 
} 

class Message { 
    static hasMany = [notes: Note] 
    static mapping = { 
     notes sort:'sendDate desc' 
    } 
} 

hata mesajı gibi görünür: gibi Benim kod görünüyor?

+0

şemanınızı dışa aktarın ve tablo ve sütunların var olduğunu görün http://www.grails.org/doc/1.1/ref/Command%20Line/schema-export.html –

+0

@Aaron - Bunu varsayılan olarak denediğimde hsqldb bellek içi veritabanı, yalnızca 'Takvim' alanı için bir sütun oluşturdu ve her şey normal görünüyordu (Belki de saat dilimi veya bir şey saklamak için iki sütun oluşturuyordu sanıyordum, ama görünmüyordu) öyleydi). –

cevap

20

sorunun giderilmesine yardımcı olabilecek bir kaç şey:

  • gerçekten sendDate özelliği için bir Calendar kullanmam gerekir mi? Çoğu zaman, bir java.util.Date kullanırdı. Alan türünü Date olarak değiştirmek sorunu çözüyor mu?
  • Eşleştirmelerinizle ilgili bir örnek çalıştım ve bir hatayla karşılaştım. Bu şekilde Message statik mapping kapatılması değiştirmeyi deneyin:

    static mapping = { 
        notes sort: 'sendDate', order: 'desc' 
    } 
    
+1

Ne yazık ki ikisi de benim için çalışmadı. Ama ben her iki taraftaki ilişkiyi tanımladığım problemi çözdüm. Not sınıfına sadece "Mesaj mesajı" ekledim ve işe yarıyor. :-) Ama yine de ilginiz için teşekkürler! :-) – Mateo

+2

@Mateo - Bilmekte fayda var. Bir çözüm için bulduğunuz her şeyi bir cevap olarak göndermenizi ve daha sonra bunu (birkaç gün içinde) kabul etmenizi tavsiye ederim, böylece başkaları, karşılaştıkları takdirde sorunu nasıl çözeceklerini bilebilirler. –

9

This page tüm Nesne İlişkisel Mapping anlatır, ben uygulamam ile benzer bir sorun vardı. Öyle gibi çözülür:

class Note implements Comparable { 
    Calendar sendDate 
    static belongsTo = Message 

    int compareTo(obj) { 
    sendDate.compareTo(obj.sendDate) 
    } 
} 

ve

class Message { 
    SortedSet notes 
    static hasMany = [notes: Note] 
} 

Umut bu kompozisyona!