0

私はプレイを使用しています!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 の配列のみを返すように変更するにはどうすればよいですか?

ありがとう!

4

1 に答える 1