2

私のプロジェクトには次の 2 つのモデルがあります。

@Entity
public class Reports extends Model{
    @Id
    @GeneratedValue
    public int id;
    @ManyToMany(cascade = CascadeType.ALL)
    public List<Tags> tags;

@Entity
public class Tags extends Model{
    @Id
    public String name;
    @ManyToMany(cascade = CascadeType.ALL)
    public Reports reports;

これら 2 つのエンティティには @ManyToMany 関連付けがあるため、Play! PostgreSQL データベースにテーブルを自動的に作成します。

create table reports_tags (
  reports_id                     integer not null,
  tags_name                      varchar(255) not null,
  constraint pk_reports_tags primary key (reports_id, tags_name))
;

そして、これがどのreports_tagsように見えるべきかのサンプルデータです:

reports_id     tags_name
     1            pie
     1            bar
     1            line
     3            plot
     3            bar
     4            scattered
     4            plot

私が問題を抱えているのは、私がしたいということですfind all reports where tags_name = 'bar'

したがって、その「クエリ」呼び出しで、1 と 3 に戻る必要がreportsありidます。

従来の方法を使用して

Ebean.find(Reports.class)
    .where()
    .eq("tags_name", "bar")
    .findList()

モデル/テーブルtags_nameにそのようなフィールドがないため、機能しませんReports

Ebean の経験がほとんどないため、そのクエリ呼び出しを行うコードが何であるかはわかりません。

4

1 に答える 1