Using correct query for retrieving ContactableEntity assets.

deploy_packages_to_gitea
Jens Pelzetter 2022-12-10 15:50:10 +01:00
parent 28f5fd53f5
commit 9330316c49
3 changed files with 34 additions and 10 deletions

View File

@ -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,

View File

@ -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(

View File

@ -20,7 +20,10 @@ package org.librecms.assets;
import org.libreccm.core.AbstractEntityRepository;
import java.util.Optional;
import javax.enterprise.context.RequestScoped;
import javax.persistence.NoResultException;
/**
*
@ -54,4 +57,20 @@ public class ContactableEntityRepository
return entity.getObjectId() == 0;
}
public Optional<ContactableEntity> findByUuid(final String uuid) {
try {
return Optional.of(
getEntityManager()
.createNamedQuery(
"ContactableEntity.findByUuid",
ContactableEntity.class
)
.setParameter("uuid", uuid)
.getSingleResult()
);
} catch (NoResultException ex) {
return Optional.empty();
}
}
}