匹配一个ElementCollection的多个成员的Hibernate SQL查询

时间:2018-06-26 12:10:10

标签: sql hibernate jpa

我用这样的JPA注释映射了Pojo

@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匹配的对象)

通过运行以下查询,我能够搜索与单个标签匹配的SearchRecords:

String labelCar = "Car";
String labelPerson = "Person";
TypedQuery<SearchRecord> query = em.createQuery("SELECT b FROM SearchRecord b JOIN b.videoLabels l WHERE l = :param1",SearchRecord.class);
query.setParameter("param1", labelCar);
List<SearchRecord> results = query.getResultList();

但是如何执行查询以过滤出所有匹配Car和Person的SearchResult?

感谢您的支持

1 个答案:

答案 0 :(得分:0)

我能够通过以下查询解决问题

SELECT DISTINCT a FROM SearchRecord a JOIN a.labels b JOIN a.labels c WHERE b.name = 'Car' and c.name = 'Person'