diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2020-02-22 11:29:37 +0100 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2020-02-22 11:29:37 +0100 |
commit | 404ac1d20d5126c7ac5467171531d5e4a9936fc1 (patch) | |
tree | 22259e345231e62c363fc584de2309b7399267b5 | |
parent | 088a21f23554624b79bf4bda58ddc11d4cf7c23c (diff) |
BookmarkResource: Use JPA metamodel for type-safe Criteria queries.
Change-Id: I7571a749275d733c9738eed01dad9fb2de7d77ba
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | build.gradle | 3 | ||||
-rw-r--r-- | gradle.properties | 1 | ||||
-rw-r--r-- | pom.xml | 6 | ||||
-rw-r--r-- | src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java | 13 |
5 files changed, 18 insertions, 6 deletions
@@ -33,6 +33,7 @@ nb-configuration.xml # Gradle .gradle/ build/ +src/main/generated # Shell .envrc diff --git a/build.gradle b/build.gradle index f2ee661..423604f 100644 --- a/build.gradle +++ b/build.gradle @@ -77,6 +77,8 @@ dependencies { implementation "com.vladsch.flexmark:flexmark-all" implementation "org.jsoup:jsoup" + annotationProcessor "org.hibernate:hibernate-jpamodelgen" + constraints { implementation "com.vladmihalcea:hibernate-types-52:${hibernateTypesVersion}" implementation "org.mapstruct:mapstruct:${mapstructVersion}" @@ -88,6 +90,7 @@ dependencies { implementation "com.vladsch.flexmark:flexmark-all:${flexmarkVersion}" implementation "org.jsoup:jsoup:${jsoupVersion}" implementation "com.rometools:rome:${romeVersion}" + annotationProcessor "org.hibernate:hibernate-jpamodelgen:${hibernateVersion}" } } diff --git a/gradle.properties b/gradle.properties index 65efece..7104428 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,6 +19,7 @@ useLatestVersionsPluginVersion = 0.2.13 findbugsJsr305Version = 3.0.2 flexmarkVersion = 0.60.2 hibernateTypesVersion = 2.9.3 +hibernateVersion = 5.4.12.Final jakartaJaccVersion = 1.6.1 jnaVersion = 5.5.0 jose4jVersion = 0.7.0 @@ -213,6 +213,12 @@ <artifactId>hibernate-types-52</artifactId> </dependency> + <!-- Hibernate --> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-jpamodelgen</artifactId> + </dependency> + <!-- Jsoup --> <dependency> <groupId>org.jsoup</groupId> diff --git a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java index 53b7ddc..ad75c4c 100644 --- a/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java +++ b/src/main/java/eu/mulk/mulkcms2/benki/bookmarks/BookmarkResource.java @@ -13,6 +13,7 @@ import com.rometools.rome.io.FeedException; import com.rometools.rome.io.WireFeedOutput; import eu.mulk.mulkcms2.benki.accesscontrol.Role; import eu.mulk.mulkcms2.benki.users.User; +import eu.mulk.mulkcms2.benki.users.User_; import io.quarkus.qute.Template; import io.quarkus.qute.TemplateExtension; import io.quarkus.qute.TemplateInstance; @@ -269,9 +270,9 @@ public class BookmarkResource { var root = query.from(Bookmark.class); bm = root; query.select(root); - root.fetch("owner", JoinType.LEFT); + root.fetch(Bookmark_.owner, JoinType.LEFT); - var target = root.join("targets"); + var target = root.join(Bookmark_.targets); query.where(cb.equal(target, Role.getWorld())); } else { var userName = identity.getPrincipal().getName(); @@ -279,14 +280,14 @@ public class BookmarkResource { var root = query.from(User.class); query.where(cb.equal(root, user)); - bm = root.join("visibleBookmarks"); - bm.fetch("owner", JoinType.LEFT); + bm = root.join(User_.visibleBookmarks); + bm.fetch(Bookmark_.owner, JoinType.LEFT); } - query.orderBy(cb.desc(bm.get("date"))); + query.orderBy(cb.desc(bm.get(Bookmark_.date))); if (owner != null) { - query.where(cb.equal(bm.get("owner"), owner)); + query.where(cb.equal(bm.get(Bookmark_.owner), owner)); } var q = entityManager.createQuery(query); |