Kriterien API - Verwendung von OBEN in ein ElementCollection
Habe ich eine Klasse
@Entity
public class Person{
...
@ElementCollection
private Set<String> tags;
...
}
Möchte ich die JPA-2.0-Kriterien-API, um die Suche über diese tags - aber in einer groß-und Kleinschreibung Weg. Damit möchte ich sowohl die parameter für die Suche in der OBEREN und die Spalte zur OBEREN (Pseudo-SQL: select p.* from Person p join-Tags t auf p.id=t.pId where upper(t.name)=upper('searchParameter'); )
Hier ist mein code ohne die OBEREN tags:
CriteriaBuilder builder = this.em.getCriteriaBuilder();
CriteriaQuery<Person> query = builder.createQuery(Person.class);
Root<Person> root = query.from(Person.class);
return this.em.createQuery(query.select(root).where(
builder.isMember(builder.upper(builder.literal(searchTag)),
root.get(Person_.tags)))).getResultList();
wo searchTag ist der input-parameter.
Wie kann ich zuweisen das OBERE der Person_.tags "Spalte"?
In anderen Worte, die ich schreiben möchte diese Abfrage mit Kriterien API:
SELECT p FROM Person p JOIN p.tags t WHERE UPPER(t) = UPPER('searchString')
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, schließlich habe ich die Lösung:
Verwenden Sie die ".als (..)" - Methode.
Müssen Sie rufen Sie Ober-und literal-Eigenschaft name auf trat Tags von Person.
Ich weggelassen
query.select(root)
, nicht sicher, wenn es erforderlich ist.Tou kann auch weglassen-generator.literal() auf Tag_.Namen, da ist String.
Wenn ich mich irgendwo falsch, bitte Bearbeiten Sie meine Antwort für weitere Nutzer.
Hoffe, das hilft.