16

hasManyマッピングステートメントを使用して、属性のデフォルトの並べ替えを設定しようとしています。私はgrailsのドキュメントに従っていますが、うまくいきません(grails 1.3.5)。私のコードは次のようになります:

class Note {
    Calendar    sendDate
    static belongsTo = Message
}

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

エラー メッセージは次のようになります。

...
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)
...

私のコードに誤りはありますか?

4

2 に答える 2

21

問題の解決に役立つ可能性のあるいくつかのこと:

  • 本当にプロパティに a を使用する必要がありCalendarますsendDateか? ほとんどの場合、java.util.Date. フィールド タイプを に変更するとDate、問題は解決しますか?
  • あなたのマッピングで例を実行したところ、エラーが発生しました。Message静的mappingクロージャーを次のように変更してみてください。

    static mapping = {
        notes sort: 'sendDate', order: 'desc'
    }
    
于 2010-11-12T13:43:46.423 に答える
11

このページでは、オブジェクト リレーショナル マッピングについて説明します。私は自分のアプリで同様の問題を抱えていました。私はそれを次のように解決しました:

class Note implements Comparable {
  Calendar sendDate
  static belongsTo = Message

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

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

これが役立つことを願っています!

于 2011-03-10T14:53:27.753 に答える