Google App Engine for Javaをslim3でやっていると、modelToJsonを使ってJSON形式でレスポンスを返す事が多いです。
slim3で1対多の関連はModelRefとInverseModelListRefで表します。
ModelRefはmodelToJsonに対応していますが、InverseModelListRefは対応していないようですね。
でも、modelToJsonしたケースはあると思いますので、やってみます。
// InverseModelListRefを定義する @Attribute(persistent = false) private InverseModelListRef<Bar, Foo> barListRef = new InverseModelListRef<Bar, Foo>(Bar.class, "fooRef", this, new Sort("key", SortDirection.ASCENDING)); // ダミーのBARのリストを定義する @Json(coder = Expanded.class) @Attribute(persistent = false) @SuppressWarnings("unused") // 直接は参照しないため private List<ModelRef<Bar>> bars; // InverseModelListRefのgetter public InverseModelListRef<Bar, Foo> getBarListRef() { return barListRef; } // JSONを取得するためのgetter public List<ModelRef<Bar>> getBars() { List<ModelRef<Bar>> bars = new ArrayList<ModelRef<Bar>>(); for (Bar bar : barListRef.getModelList()) { ModelRef<Bar> modelRef = new ModelRef<Bar>(Bar.class); modelRef.setModel(bar); bars.add(modelRef); } return bars; }
少し無理やりな感じもしますが、これで出来るようになりました。