Spring Data JPA Спецификация для объекта, который не имеет отношения к другому объекту, но последний должен использоваться для фильтрации - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно искать записи для TableA на основе значений в @ElementCollection внутри TableB. Это текущая структура после самого последнего рефакторинга (я буду игнорировать избыточный код):

@Entity
public class TableA {
  @Id
  public Long id;
}
@Entity
public class TableB {
  @Id
  public Long id

  @ElementCollection(fetch = FetchType.EAGER)
  @CollectionTable(name = "tableA_assignment", joinColumns = @JoinColumn(name = "tableB_id"))
  private List<TableAAssignment> enpAssignments = new ArrayList<>();
}
@Embeddable
public class TableAAssignment {
  @NotNull
  @OneToOne
  private TableA tableA;

До рефакторинга у нас была следующая структура таблицы A:

@Entity
public class TableA {
  @Id
  public Long id;

  @ManyToMany(mappedBy = "tableas")
  private Set<TableB> tableBs = new HashSet<>();
}

и используя r sql -parser мы смогли сделать что-то вроде этого: search=tableBs=isempty=false;status=='ACCEPTED'&page=0&size=20 где =isempty= - наш пользовательский оператор.

Но теперь RsqlParser не может создать правильную спецификацию из-за отсутствия свойства tableBs. Мы не можем удалить этот фильтр из рабочей среды, но вынуждены отделить TableA от собственного лога c, поскольку он поступает из внешнего источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...