とってもこれ貴重やわぁ。。。助かります。
そんなわけで備忘録。
参考サイト:ふじやん雑記帳さん
※中断から下あたりにある「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を使わなくても良い。
参照整合性が必要な場合は、EntityGroupを使わないならアプリケーション側で実装する必要がありそうでうす。
返信削除http://www.tdtsh.com/blog/archives/818
お。
返信削除「org.slim3.datastore.EntityNotFoundRuntimeException」
がきたときの処理ってことですかね。
約束事として徹底せんとしょうがないかなぁ