Query for finding a domain by its root category

Former-commit-id: 54a2dcffdc
pull/7/head
Jens Pelzetter 2020-11-21 11:37:19 +01:00
parent 93a260c345
commit 7ca750b658
2 changed files with 51 additions and 18 deletions

View File

@ -82,14 +82,26 @@ import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "CATEGORY_DOMAINS", schema = DB_SCHEMA)
@NamedQueries({
@NamedQuery(name = "Domain.findByKey",
query = "SELECT d FROM Domain d WHERE d.domainKey = :key"),
@NamedQuery(name = "Domain.findByUri",
query = "SELECT d FROM Domain d WHERE d.uri = :uri"),
@NamedQuery(name = "Domain.findByUuid",
query = "SELECT d FROM Domain d WHERE d.uuid = :uuid"),
@NamedQuery(name = "Domain.findAll",
query = "SELECT d FROM Domain d ORDER BY d.domainKey"),
@NamedQuery(
name = "Domain.findByKey",
query = "SELECT d FROM Domain d WHERE d.domainKey = :key"
),
@NamedQuery(
name = "Domain.findByUri",
query = "SELECT d FROM Domain d WHERE d.uri = :uri"
),
@NamedQuery(
name = "Domain.findByUuid",
query = "SELECT d FROM Domain d WHERE d.uuid = :uuid"
),
@NamedQuery(
name = "Domain.findByRootCategory",
query = "SELECT d FROM Domain d WHERE d.root = :root"
),
@NamedQuery(
name = "Domain.findAll",
query = "SELECT d FROM Domain d ORDER BY d.domainKey"
),
@NamedQuery(
name = "Domain.search",
query

View File

@ -87,6 +87,7 @@ public class DomainRepository extends AbstractEntityRepository<Long, Domain> {
* @return The {@code Domain} identified by {@code domainKey} or
* {@code null} if there is no such {@code Domain}.
*/
@Transactional(Transactional.TxType.REQUIRED)
public Optional<Domain> findByDomainKey(final String domainKey) {
final TypedQuery<Domain> query = getEntityManager()
.createNamedQuery("Domain.findByKey", Domain.class);
@ -111,6 +112,7 @@ public class DomainRepository extends AbstractEntityRepository<Long, Domain> {
* @return The {@code Domain} identified by the provided URI or {@code null}
* if there is so such {@code Domain}.
*/
@Transactional(Transactional.TxType.REQUIRED)
public Domain findByUri(final URI uri) {
final TypedQuery<Domain> query = getEntityManager()
.createNamedQuery("Domain.findByUri", Domain.class);
@ -126,18 +128,37 @@ public class DomainRepository extends AbstractEntityRepository<Long, Domain> {
*
* @return An optional either with the found item or empty
*/
@Transactional(Transactional.TxType.REQUIRED)
public Optional<Domain> findByUuid(final String uuid) {
final TypedQuery<Domain> query = getEntityManager()
.createNamedQuery("Domain.findByUuid", Domain.class);
query.setParameter("uuid", uuid);
try {
return Optional.of(query.getSingleResult());
return Optional.of(
getEntityManager()
.createNamedQuery("Domain.findByUuid", Domain.class)
.setParameter("uuid", uuid)
.getSingleResult()
);
} catch (NoResultException ex) {
return Optional.empty();
}
}
@Transactional(Transactional.TxType.REQUIRED)
public Optional<Domain> findByRootCategory(final Category rootCategory) {
try {
return Optional.of(
getEntityManager()
.createNamedQuery(
"Domain.findByRootCategory", Domain.class
)
.setParameter("root", rootCategory)
.getSingleResult()
);
} catch (NoResultException ex) {
return Optional.empty();
}
}
@Transactional(Transactional.TxType.REQUIRED)
public List<Domain> search(final String term) {
final TypedQuery<Domain> query = getEntityManager()
.createNamedQuery("Domain.search", Domain.class);