我具有以下数据库结构
@Entity
@Table(name = "record")
public class SearchRecord {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int id;
private String vidName;
@ElementCollection
private List<String> videoLabels = new ArrayList<String>();
,并希望运行一个Hibernate查询,以过滤出所有匹配/包含1..n videoLabels的SearchRecords。 (仅与所有videoLabel匹配的对象!)
我想出了以下解决方案-在这种情况下,匹配五个标签名称
SELECT DISTINCT a
FROM SearchRecord a JOIN
a.labels b JOIN
a.labels c JOIN
a.labels d JOIN
a.labels e JOIN
a.labels f
WHERE b.name = 'Fire alarm' and
c.name = 'Speech' and
d.name = 'bus' and
e.name = 'cup' and
f.name = 'dog'
对于这种具有五个联接操作的方案,我想这是最糟糕的查询。有没有办法优化查询?