カスタム検索

2009年1月31日土曜日

Grails-1.1 Beta3の検証

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

・Persistence of Collections of Basic Types
hasManyでStringとかが指定出来るようになりましたよ。
  1. class Book {  
  2.   static hasMany = [authors:String]  
  3. }  


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が指定できるよ。
  1. enum VehicleStatus { "NONE""LITTLE""MANY" }  
  2. class Book {  
  3.   static hasMany=[statuses:VehicleStatus]  
  4. }  


以下のようなテーブルが出来るっぽい
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でデータをひっぱれるよ。
  1. def book = Book.read(1)  


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

・Default Sort Order
ドメインのデフォソートを決められるよ。
  1. class Book {  
  2.   static hasMany=[authors:Author]  
  3.   static mapping = {  
  4.     authors sort:"name"  
  5.   }  
  6.   
  7.   String title  
  8. }  
  9.   
  10. class Author {  
  11.   static belongsTo = [book:Book]  
  12.   String name  
  13. }  


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

0 件のコメント: