・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() では確認できませぬでした。