【備忘録】Slim3のModelRefでクエリ

投稿日:

ModelRefで問い合わせしたいなーと思い、ネットの海を彷徨ってみつけた情報。
とってもこれ貴重やわぁ。。。助かります。

そんなわけで備忘録。

参考サイト:ふじやん雑記帳さん
※中断から下あたりにある「ModelRefで問い合わせ」

ModelRefで問い合わせ

  • ModelRefAttributeMetaを使えば、ModelRefで問い合わせが可能

  • 例えば、部署(1)対従業員(多)の場合、

// 部署
@Model(schemaVersion = 1)
public class Dept implements Serializable {
}

// 従業員
@Model(schemaVersion = 1)
public class Employee implements Serializable {
private ModelRef<dept> deptRef = new ModelRef<dept>(Dept.class);

public ModelRef<dept> getDeptRef() {
return deptRef;
}
}
とある場合に、「ある部署に所属する従業員全員」という問い合わせは下記のコードで可能。
Key deptKey = [ある部署のKey];

EmployeeMeta employeeMeta = new EmployeeMeta();
ModelRefAttributeMeta<employee, ModelRef<Dept>, Dept> refMeta = employeeMeta.deptRef;
List<employee> list = Datastore.query(Employee.class).filter(refMeta.equal(deptKey));
  • これを使えば、親子関連を持たせたい場合に、entityGroupを使わなくても良い。


コメント コメントを追加

  1. sally より:

    参照整合性が必要な場合は、EntityGroupを使わないならアプリケーション側で実装する必要がありそうでうす。

    http://www.tdtsh.com/blog/archives/818

  2. tyatopon より:

    お。
    「org.slim3.datastore.EntityNotFoundRuntimeException」
    がきたときの処理ってことですかね。
    約束事として徹底せんとしょうがないかなぁ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です