デキるヤツは違う.「Play! Framework」

最近割と有名?な,Webアプリケーション用フレームワーク「Play! Framework」を使ってみました.

何がデキるヤツなのかというと
・サーバ立てる必要無し
MySQLだの導入する必要無し
・提供されてるライブラリが充実

挙げればキリがないですが,大体こんな感じです.

一体どんな風に使われてるのか,というと
http://www.playframework.org/
の上にある動画を見ていただければ分かると思います.

ToDoアプリがこんな簡単に作れるのかよっ!w っていうのが感想ですね.
途中の「Oops」も仕込み臭いがそれが良い.

このフレームワーク,Webアプリを手軽にサクっと作りたいなぁ,とか
サーバ構築わかんない・・・時間もないし・・・(今回の私なんですが)とか
そういう人たちに向いてると思います.
こういうフレームワークにしては,ドキュメントの方も充実してますしね.
本気で使いこなそうと思ったら,プログラムに慣れてない私だとかなり日数を要することになると思いますが・・・w

とりあえず,テストプログラムとして
・データベースに書き込む
・データベースから読みだす

という二つのメソッドを実装してみました.

仕様なのかどうか分かりませんが,データがDBに書き込まれるとき
自分で指定しないとid=1から始まるみたい?です.

また,今回私がハマった罠なんですが(そもそも,私は見てただけで,解決したときも見ていただけなのですが・・・w)

play.exceptions.JavaExecutionException: org.hibernate.exception.SQLGrammarException: could not insert: [mod
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:285)
at Invocation.HTTP Request(Play!)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not i
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1235)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1174)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:674)
at play.db.jpa.JPABase._save(JPABase.java:37)
at play.db.jpa.GenericModel.save(GenericModel.java:172)
at controllers.Application.set(Application.java:14)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:408)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:403)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:176)

のようなエラーが出てきました.
これは,DBに値を書き込むときに出てくるもので
どうプログラムを見ても,複雑な処理はしてないし,動画とソースは大体一緒だし・・・

と,数十分かけて出てきた答えは
メソッド名を Positionとしてたのがダメだったようです.
何かのメソッドとかぶっているのはそうなんですが,呼びだしているわけじゃないんですけどねぇ.

Java予約語にも登録されているわけじゃないですし.
とりあえず,メソッド名を変更する事で回避できました.

また何かありましたら,Play!について書いていきます.