From 9330316c49f02114ddfadb9430681784284d3bc5 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 10 Dec 2022 15:50:10 +0100 Subject: [PATCH] Using correct query for retrieving ContactableEntity assets. --- .../librecms/assets/ContactableEntity.java | 8 +++++ .../assets/ContactableEntityIdResolver.java | 7 ++--- .../assets/ContactableEntityRepository.java | 29 +++++++++++++++---- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntity.java b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntity.java index 2a03e45f2..e16d1fac5 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntity.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntity.java @@ -33,6 +33,8 @@ import java.util.Objects; import javax.persistence.Entity; import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.OrderBy; @@ -49,6 +51,12 @@ import static org.librecms.CmsConstants.*; @Entity @Audited @Table(name = "CONTACTABLE_ENTITIES", schema = DB_SCHEMA) +@NamedQueries({ + @NamedQuery( + name = "ContactableEntity.findByUuid", + query = "SELECT c FROM ContactableEntity c WHERE c.uuid = :uuid" + ) +}) @JsonIdentityInfo( generator = ObjectIdGenerators.PropertyGenerator.class, resolver = ContactableEntityIdResolver.class, diff --git a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityIdResolver.java b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityIdResolver.java index 8a10ca7b2..e695381e9 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityIdResolver.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityIdResolver.java @@ -51,11 +51,8 @@ public class ContactableEntityIdResolver implements Serializable, public Object resolveId(final ObjectIdGenerator.IdKey id) { return CdiUtil .createCdiUtil() - .findBean(AssetRepository.class) - .findByUuidAndType( - id.key.toString(), - ContactableEntity.class - ) + .findBean(ContactableEntityRepository.class) + .findByUuid(id.key.toString()) .orElseThrow( () -> new IllegalArgumentException( String.format( diff --git a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityRepository.java b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityRepository.java index 9d46a6623..916f149dd 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityRepository.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ContactableEntityRepository.java @@ -20,15 +20,18 @@ package org.librecms.assets; import org.libreccm.core.AbstractEntityRepository; +import java.util.Optional; + import javax.enterprise.context.RequestScoped; +import javax.persistence.NoResultException; /** * * @author Jens Pelzetter */ @RequestScoped -public class ContactableEntityRepository - extends AbstractEntityRepository{ +public class ContactableEntityRepository + extends AbstractEntityRepository { private static final long serialVersionUID = 1L; @@ -44,14 +47,30 @@ public class ContactableEntityRepository @Override public Long getIdOfEntity(final ContactableEntity entity) { - + return entity.getObjectId(); } @Override public boolean isNew(final ContactableEntity entity) { - + return entity.getObjectId() == 0; } - + + public Optional findByUuid(final String uuid) { + try { + return Optional.of( + getEntityManager() + .createNamedQuery( + "ContactableEntity.findByUuid", + ContactableEntity.class + ) + .setParameter("uuid", uuid) + .getSingleResult() + ); + } catch (NoResultException ex) { + return Optional.empty(); + } + } + }