У меня есть следующие две модели в моем проекте:
@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;
Поскольку у этих двух сущностей есть ассоциация @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'
Итак, с помощью этого вызова «запроса» я должен вернуть reports
с id
1 и 3.
Используя обычный способ
Ebean.find(Reports.class)
.where()
.eq("tags_name", "bar")
.findList()
не будет работать, потому что нет таких полей с tags_name
в модели/таблице Reports
Я не знаю, какой код должен выполнять этот вызов запроса, так как мой опыт работы с Ebean очень мал.