我需要根据TableB内@ElementCollection中的值在TableA中搜索记录。 这是最后一次重构后的当前结构(我将忽略冗余代码):
@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;
在重构之前,我们具有TableA的以下结构:
@Entity
public class TableA {
@Id
public Long id;
@ManyToMany(mappedBy = "tableas")
private Set<TableB> tableBs = new HashSet<>();
}
并使用rsql-parser,我们可以执行以下操作:
search=tableBs=isempty=false;status=='ACCEPTED'&page=0&size=20
,其中=isempty=
是我们的自定义运算符。
但是现在RsqlParser由于缺少tableBs
属性而无法创建正确的规范。
我们无法从生产中删除此过滤器,但是由于它来自外部,因此不得不将TableA与自己的逻辑分开。