私はプレイを使用しています!Ebean/MySQL を使用した 2.1.4 フレームワーク。
システムは基本的にコースとその要件を追跡します。たとえば、高度な芸術を取りたい場合は、最初に通常の芸術を取らなければなりません。私が理解しているように、これは多対多の関係ですが、間違っている可能性があります。
これが私のモデルです: @Entity public class Course {
public static Model.Finder<Long,Course> find = new Model.Finder<Long,Course>(Long.class, Course.class);
@Id
private Long id;
private String name;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable( name = "course_course",
joinColumns = @JoinColumn(name = "course_id1"),
inverseJoinColumns = @JoinColumn(name = "course_id2"))
private Set<Course> courseRequirements = new HashSet<Course>();
private String availability;
private Long category;
@Lob
private String description;
@Lob
private String otherRequirements;
private Long bucketId;
// ゲッターとセッター...
JSON をフロントエンドに返す方法は次のとおりです。
List<Course> courses = Ebean.find(Course.class).fetch("courseRequirements").findList();
JsonContext jsonContext = Ebean.createJsonContext();
return ok(jsonContext.toJsonString(courses));
ただし、JSON の「courseRequirements」キーでは、完全なコース オブジェクトを含む新しい配列が開かれます。必要なコース ID の配列を取得したいだけです。たとえば、 courseRequirements: [3, 5] は、次のことを意味します。このコースでは、最初に ID 3 と 5 のコースを受講する必要があります。
ゲッターを次のように書き直しました。 public Set getCourseRequirements() { Set requiredCourseIds = new HashSet();
for(Course course : courseRequirements)
{
requiredCourseIds.add(course.getId());
}
return requiredCourseIds;
}
JSONキーを入力しようとするとEbeanがそれを引っ張ってくると思っていたので、そうではありませんでした。
完全なオブジェクトではなく、 courseRequirements キーのコース ID の配列のみを返すように変更するにはどうすればよいですか?
ありがとう!