From 7a380dc2146d8ea09689ae2ec787a6f0679aefba Mon Sep 17 00:00:00 2001 From: Joern Muehlencord Date: Mon, 10 Jun 2019 14:44:37 +0200 Subject: [PATCH] added find method with support to init certain collections --- .../shared/db/AbstractController.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/db/src/main/java/de/muehlencord/shared/db/AbstractController.java b/db/src/main/java/de/muehlencord/shared/db/AbstractController.java index da513f0..0821833 100644 --- a/db/src/main/java/de/muehlencord/shared/db/AbstractController.java +++ b/db/src/main/java/de/muehlencord/shared/db/AbstractController.java @@ -18,6 +18,7 @@ package de.muehlencord.shared.db; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -26,6 +27,7 @@ import javax.ejb.LockType; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.inject.Inject; +import javax.persistence.EntityGraph; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; @@ -229,6 +231,20 @@ public abstract class AbstractController { return em.find(entityClass, id); } + @Lock(LockType.READ) + public T find(Object id, String... subGraphItems) { + EntityGraph graph = this.em.createEntityGraph(entityClass); + for (String subGraphItem : subGraphItems) { + graph.addSubgraph(subGraphItem); + } + + Map hints = new HashMap<>(); + hints.put("javax.persistence.loadgraph", graph); + + T entity = (T) em.find(entityClass, id, hints); + return entity; + } + @Lock(LockType.READ) public List findAll() { return findAll(new ArrayList<>());