環境設定(プラグインインストールまでの流れ)
以前紹介した資料どおりです。
grails appengine plugin インストール後に、JPAかJDOかどちらを使用するか聞かれるが、 JPAを選びました。
理由は特にありません。
ちなみに、 grails appengine plugin のversionは0.8.3になっていました。着実にバージョンアップしています。
ドメインクラスの作成
上記の資料ではドメインクラスを使用しない例しか記載していないかったので、ここでドメインクラスを作成。 grails-app/domain 直下にクラスを配置すると動かないということなので、適当にパッケージを作成しました。ありきたりだが本の情報を管理するBookクラスを作成。
grails create-domain-class com.Book
Bookドメイン作成
作成後、カラムを追加。
ビュー、コントローラーも作成
1
| grails generate-all com.Book
|
ViewとControllerも作成。
アプリケーション起動
実行してからなかなか起動しない。かなりあせる。問題があるのか…と思ったら localhoat になっていました。そりゃ起動しない。
起動はするようになったけれども、com.BookControllerへアクセスでエラー発生。以下のとおり。
1
2
3
4
5
6
7
8
9
| org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static com.Book.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:book]]
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)
Caused by: groovy.lang.MissingMethodException: No signature of method: static com.Book.list() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[max:10, action:list, controller:book]]
at com.BookController$_closure2.doCall(BookController.groovy:14)
at com.BookController$_closure2.doCall(BookController.groovy)
... 4 more
|
com.Book に listメソッドがない と言われる。ローカルで動作させるのは無理??
以下のサイトの記述がヒントになりそうなので、明日試してみます。
To get GORM-like behavior with dynamic finders and so on you need to install the GORM-JPA plugin (there currently isn’t a GORM API for JDO, sorry!): grails install-plugin gorm-jpa Once this is installed you can using of the regular methods provided by the GORM API like save(), delete() and so on as well as dynamic finders.
分からないので明日の朝試してみる。