caseクラスでパラメータにアノテーション 続き

前回caseクラスでパラメータにアノテーションを書いても効かなかったと書きましたが、正確にはjavaアノテーションは効かないということでした。

case class Shohin (
@BeanProperty pk:String

これは効くけれど、

case class Shohin (
@Column columnDefinition="text") pk:String

これは効かない。これが効かないのはしょうがないとしても、

case class Shohin (
@Id pk:String

これが効かないと、EJBコンテナにデプロイしたときにエラーになってしまうので、致命的。それでcaseクラスを諦めていたわけですが、

http://www.davidgreco.it/MySite/Blog/Entries/2011/2/16_Scala_and_JPA__a_couple_of_hints.html

に解決方法がありました。

import scala.annotation.target._
case class Shohin (
@(Id @field) @(Column @field)(columnDefinition="text") pk:String

とするということです。なにはともあれ、エンティティビーンにcaseクラスが使えるようになったのは、とてもうれしい。