2013年2月8日金曜日

JSONIgnoreがちょっと残念 | Play Framework2.0 ここんがんばれ!

Play Framework 2.1がリリースされましたね。 http://www.playframework.com/
さて、そんななか、Playについて叱咤激励していきます。
Java版だとORMにEBeanを使っています。

modelsの中に各モデルを記述していきます。
ここに書いた内容がDBにも反映されます。
例えば
emailを必須項目としたい場合は


@Entity
public class User extends Model {
@Required
public String email;


みたいな感じに書くわけですね。
ちなみにこの中には


 public String getEmai() {
return email + "hoge";
    }

みたいな事もかけてしまいます。
これやると、 テンプレート側で

user.getEmail()ってやったときとuser.emailってやった時で挙動が変わってしまうので、
注意が必要です。

さて、それとは別に
Modelの中には
static関数もかけてしまいます。


public static List<User> getChildren(){
return Ebean.find(User.class)
    .where()
      .eq("parentUserId", this.userId)
    .findList();
}

みたいな感じですね。
で、これを書いた状態でユーザーのリストをJSONで取ってくるなんてした時には、全てのデータに対してstatic関数の中身も処理した上でJSONを返すため、
必要でないデータは意図的に@JsonIgnoreする必要があります。

おそらくModelの中にはstatic関数は書かなくて別の所で処理したほうがいいんでしょうが・・・。
(phpで使ってたPropelだとPeerがあったし、Slim3だとServiceがあるんだけどなあ・・・)

0 件のコメント:

コメントを投稿