カスタム検索

2009年1月31日土曜日

Grails-1.1 Beta3の検証

Grails-1.1Beta3がリリースされたのでリリースノートから一部検証・・・

・Persistence of Collections of Basic Types
hasManyでStringとかが指定出来るようになりましたよ。

class Book {
static hasMany = [authors:String]
}


hsqlDBのfileで確認したところ以下のようなテーブルが出来るらしい
CREATE MEMORY TABLE BOOK_AUTHORS(BOOK_ID BIGINT,AUTHORS_STRING VARCHAR(255),CONSTRAINT FKCBA3F8F23FA913A FOREIGN KEY(BOOK_ID) REFERENCES BOOK(ID))
でもscaffoldには対応してくれないみたい。現段階では正直微妙?

・Persistence of Collections of Enum Types
 上のhasManyでEnumが指定できるよ。

enum VehicleStatus { "NONE", "LITTLE", "MANY" }
class Book {
static hasMany=[statuses:VehicleStatus]
}


以下のようなテーブルが出来るっぽい
CREATE MEMORY TABLE BOOK_STATUSES(BOOK_ID BIGINT,VEHICLE_STATUS VARCHAR(255),CONSTRAINT FKA209D4B63FA913A FOREIGN KEY(BOOK_ID) REFERENCES BOOK(ID))
同じくscaffoldには対応してない

・Read-Only Access to Objects
ReadOnlyでデータをひっぱれるよ。

def book = Book.read(1)


通常Grailsではひっぱったドメインはフィールドの値を変更してコントローラーを抜けると、変更された値が自動的に保存されます。
readでひっぱるとフィールドの変更があっても元のデータは更新されません。
んがっ、book.save()したら更新されちゃいました :p
あとfindとかしたい場合はどうするんだろう

・Default Sort Order
ドメインのデフォソートを決められるよ。

class Book {
static hasMany=[authors:Author]
static mapping = {
authors sort:"name"
}

String title
}

class Author {
static belongsTo = [book:Book]
String name
}


今までは book.authors を参照した場合順番はランダムだったのがソートフィールドを指定出来るようになりました。
上の例だとauthorのname順で取得出来ます。
サンプルではドメイン自体のsortも決められるような事がかいてあったけど .list() では確認できませぬでした。 

0 件のコメント: