简体   繁体   中英

Hibernate SQL query matching more than one members of an ElementCollection

I have Pojo mapped with JPA annotations like this

@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>();

and would like to run a Hibernate query that filters out all SearchRecords that match/contain 1..n videoLabels. (only objects that match all of the videoLabels)

I was able to search for SearchRecords that match a single label by running the following query:

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();

But how can I execute a query filtering out all SearchResults matching Car and Person?

Thanks for your support

我可以通过以下查询解决问题

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM