我用这样的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?
感谢您的支持
答案 0 :(得分:0)
我能够通过以下查询解决问题
SELECT DISTINCT a FROM SearchRecord a JOIN a.labels b JOIN a.labels c WHERE b.name = 'Car' and c.name = 'Person'