Einfache CriteriaQuery in JPA Criteria API, das ist zu viel für ein noob
Ich versuche zu schreiben, die folgenden SQL-Abfragen mit JPA Criteria API
SELECT * FROM roles WHERE roles.name IN (SELECT users.role FROM users where name="somename");
und es ist ein bisschen zu viel für mich (ich habe gerade angefangen learing Kriterien API). Ich habe so etwas wie dieses:
CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();
CriteriaQuery<RoleEntity> criteriaQuery = criteriaBuilder.createQuery(RoleEntity.class);
Root<RoleEntity> root = criteriaQuery.from(RoleEntity.class);
Subquery<UserEntity> subquery = criteriaQuery.subquery(UserEntity.class);
Root<UserEntity> subqueryRoot = subquery.from(UserEntity.class);
subquery.where(criteriaBuilder.equal(subqueryRoot.get(UserEntity_.username), username));
subquery.select(subqueryRoot);
Und ich habe keine Ahnung, wie es alle zusammen.
Beste Grüße,
Bartek
- Nur eine Meinung: ich Liebe JPA, ich habe Hibernate ist
Criteria
vor und noch habe ich geblieben Weg von JPACriteria
. Es ist Komplexität bringt keinen Mehrwert für mich. - Gut, ich Stimme zu, es ist viel zu kompliziert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fellow JPA Lernenden hier. Hier ist mein Versuch es einrichten:
Hoffentlich das hilft!
userSQ.select(userSQ.get(UserEntity_.role)) .where(cb.equal(userSQ.get(UserEntity_.username), username));
nach diesem: link es gibt keine solche Methode auswählen, die im Root-Schnittstelle.