一旦途切れるとひどく長いこと中断してしまうのは、自分の悪い癖です。
別に忙しくもなかったし、書きたいこともあったのですが。。
というわけで、最近は Scala! Scala! と連呼している訳です。
一応 GAE/Jにも興味があるので、ScalaをGAE/J上で動かしてみているのですが、
ScalaのクラスをJDO経由で永続化できるようにするには、若干コツがいったので、それをメモします。
データクラスの定義は以下のようになりました。
"id"をコンストラクタの引数にしていない理由は、プライマリキーの列に明示的に値を
指定したらAppEngineに怒られたからです。
でもこれだけだと、データクラスをEnhanceするときに、謎のjava.lang.VerifyErrorが発生します。
しらべたら、以下のようなバグがある模様。
http://www.datanucleus.org/servlet/jira/browse/NUCENHANCER-34
なので、GAE/J のSDKに同梱されているdatanuculeus のjarを最新版にいれかえたら、
何となく動いたっぽい。
ここまでやったところで、実はLow-Level APIをラップするクラスを書いた方がScalaっぽいのではないかと
思い始めた今日この頃です。
別に忙しくもなかったし、書きたいこともあったのですが。。
というわけで、最近は Scala! Scala! と連呼している訳です。
一応 GAE/Jにも興味があるので、ScalaをGAE/J上で動かしてみているのですが、
ScalaのクラスをJDO経由で永続化できるようにするには、若干コツがいったので、それをメモします。
データクラスの定義は以下のようになりました。
package diet.entity import javax.jdo.annotations.IdentityType import javax.jdo.annotations.IdGeneratorStrategy import javax.jdo.annotations.PersistenceCapable import javax.jdo.annotations.PrimaryKey import javax.jdo.annotations.Persistent @PersistenceCapable {val identityType = IdentityType.APPLICATION} class User( @Persistent var name: String ) { @PrimaryKey @Persistent {val valueStrategy = IdGeneratorStrategy.IDENTITY} var id: java.lang.Long = null }
"id"をコンストラクタの引数にしていない理由は、プライマリキーの列に明示的に値を
指定したらAppEngineに怒られたからです。
でもこれだけだと、データクラスをEnhanceするときに、謎のjava.lang.VerifyErrorが発生します。
しらべたら、以下のようなバグがある模様。
http://www.datanucleus.org/servlet/jira/browse/NUCENHANCER-34
なので、GAE/J のSDKに同梱されているdatanuculeus のjarを最新版にいれかえたら、
何となく動いたっぽい。
ここまでやったところで、実はLow-Level APIをラップするクラスを書いた方がScalaっぽいのではないかと
思い始めた今日この頃です。